* [CODE(HTMLe)@en[head]] 要素 [CODE(HTMLa)@en[profile]] 属性 (HTML) [15] [[HTML]] の [CODE(HTMLe)[[[head]]]] 要素の [DFN[[CODE(HTMLa)[profile]] [[属性]]]]は、 [[プロファイル]] [WEAK[([[メタ情報]]の名前付き辞書)]] を参照するために使うことができます。 プロファイルについて詳しくは[CITE[[[HTMLメタ情報プロファイル]]]]をご覧下さい。 [48] :状態:[[W3C]] [[勧告]] :[[要素]]:[CODE(URI)@en[[QN[[[head]]] [http://www.w3.org/1999/xhtml]]]] :[[名前空間URI]]:([[null名前空間]]) :[[属性名]]:[CODE(HTMLa)@en[[[profile]]]] ([Q@en[[[profile]]]] ([Q[プロファイル]]) より) :[[属性値]]:[[空白]][[区切り]]の [[URI]] の[[並び]] (>>34) :[[既定値]]:([[プロファイル]]なし) [33] 仕様書: - [[HTML 4]] -- [CODE(HTMLe)[[[head]]]] 要素 [CODE(HTMLa)[[[profile]]]] 属性 -- [CSECTION[Meta data profiles]] - [XMDP] [CITE[XMDP: Introduction and Format Description]] ** 属性値 @@ これ以降の項を整理する [34] 値は[[空白]]で分離した一つ以上の [[URI参照]]の並びで、 大文字・小文字が区別されます。但し、二つ目以降の URI 参照は無視されます。詳しくは >>3-14 を参照。 [17] ここで指定したプロファイルは、すべての [CODE(HTMLe)[[[meta]]]] 要素, [CODE(HTMLe)[[[link]]]] 要素に適用されます。 HTML 4 ではプロファイルは最初の1つの URI 参照しか意味を持ちませんから、そのプロファイルですべてのメタ・データ特性を定義しないといけないことになります。 [[#comment]] *** A URI or URIs? - [3] [[HTML 4]] 本文では、値は複数指定できる (最初の1つしか意味は持たないが。) と明記されています: ''The global structure of an HTML document'' - [4] しかし [[DTD]] の [CODE(HTML)[%URI;]] の注釈は、 ''a'' URI になっています: ''HTML 4 Document Type Definition'' - [5] [CODE(HTML)[%URI;]] に対応する本文の説明は ''URIs'' になっていますが、複数 URI ではなく指定できる値の集合として複数形になっていると思われます (他の型や属性との関係上。): ''Basic HTML data types'' - [6] 意図的なのか誤りなのかは不明ですが、本文ではっきり複数書けると明記されていますから、 DTD が間違いの可能性が高いでしょう。 - [7] DTD の内容はほぼそのまま XHTML 1.0, XHTML m12n に受け継がれていますから、同様の問題があります。 XHTML 1 は要素の具体的定義は HTML4 参照でして、仕様書に全く明記されてないのが更に問題。 - [8] XHTML 2.0 (WD) では値の定義が ''URI'' とは別の ''URIs'' に改められているので、この問題は解決しそうです。 - [9] >>6-7 HTML4 にはないが XHTML には [CODE(HTML)[%URIs;]] 系のものがあるんだから、それを参照していないのは問題だよなあ [14] >>3-9 属性値は空白分離の URI の並びだけど、 HTML 4 では最初のものだけが意味を持つと書いてあります。 複数個の URI が書かれたときの解釈は将来の版で規定する (かもしれない) ということで、 このようなごちゃごちゃしたことになっているのでしょう。 - HTML 4 適合 UA は一つ以上の URI 参照の並びとみなすが、 意味解釈時には最初のもの以外は捨てる。 - HTML 4 文書の著者は URI 参照を一つだけ書く。 - HTML 4 妥当性検証器は複数個の URI 参照があっても妥当とするが、意味がないと警告する。 が適当な対処だと思われます。 [25] ''ちょっとしたメモ - 困ったちゃんのprofile属性'' これと同じ話。 ([[名無しさん]] [WEAK[2004-03-18 01:10:42 +00:00]]) [35] 複数の URI 参照が認められるとすると、 相互の関係が問題になってきます。 XMDP [SRC[XMDP]] は、 HTML 4 が最初の URI 参照だけを使用すると規定していることから、 最初の URI 参照のプロファイルが一番優先度が高く、 最後の URI 参照のプロファイルが一番低いと解釈する [WEAK[(同じ語彙が複数のプロファイルで定義されていれば、最初の方のものとみなす)]] ことを提案しています。 [36] HTML 4.0 で [CODE(HTMLe)[[[object]]]] 要素の [CODE(HTMLa)[[[archive]]]] 属性が [CODE(SGML)[%[[URI]]]] なのは間違いで、 複数の URI 参照を書けるとして HTML 4.01 で [CODE(SGML)[[[CDATA]]]] に修正されました [SRC[HTML 4.01 A.1.1.14]]。 [CODE(HTMLa)[profile]] 属性も同様に間違いで見落としただけの可能性があります。 [37] [[Gecko]] の [[DOM]] で [CODE(HTMLe)[[[head]]]] 要素の [CODE(DOMa)[[[profile]]]] [[DOM]] [[属性]]を取得すると[[絶対URI参照]]が得られますが、 [[間隔]]は [CODE(URI)[%20]] になります。 どうやら [[Gecko]] は [Q[a URI]] として実装しているようです。 [[WinIE 6]] は [CODE(DOMa)[[[profile]]]] [[DOM]] [[属性]]で[[要素属性]]の値が得られるのでどう考えているのかは分かりません。 ([[名無しさん]] [WEAK[2005-05-07 05:56:20 +00:00]]) [38] [[Opera 8]] も [[WinIE 6]] と同じ結果。 ([[名無しさん]] [WEAK[2005-05-07 05:57:47 +00:00]]) [39] [[Bjoern Hoehrmann]]が、いつまで種々の問題を放置しておく気だよと''[[TAG]]の''公開[[メイリング・リスト]]で指摘しました。 ;; [CITE@en[The xhtml:onkeypress architecture]] , それに対して[[Steven Pemberton]]は、問題は解決したけど追跡システムで閉じておくのを忘れただけだと書きました。 ;; [CITE@en[Re: The xhtml:onkeypress architecture]] , そしてその後、追跡システムには > The datatype for the profile was indeed changed to URI in M12N on purpose, specifically so that it would be possible to use it as a possible means to identify compound document profiles in the future. > [CODE(HTMLa)@en[[[profile]]]]の[[データ型]]は確かに[[URI]]に変更されたが、これは特に将来[[複合文書]]プロファイルの識別に使えるようにと考えてのことだ。 というメモが書かれたようです。 ;; [CITE[HTML Working Group Voyager Issue Tracking System - Modularization-abstractions/8168]] ;; [[Bjoern Hoehrmann]]の[CITE@en[Why profile="" allows only one URI]] ;; 参考: [CITE[HTML Working Group Voyager Issue Tracking System - HTML-4.01/6383]] , [CITE[HTML Working Group Voyager Issue Tracking System - Modularization-text/8161]] ([[名無しさん]] [WEAK[2006-02-15 08:18:17 +00:00]]) [40] のコメントは変わっていませんが、 [[XHTML m12n 1.1]] [[LC]] [[WD]] は [CODE@en[[[URIs]]]] に変えちゃってます。 [CITE[XHTML Modularization 1.1 - XHTML Abstract Modules]] ([[名無しさん]] [WEAK[2006-07-07 15:25:28 +00:00]]) [47] >>39 確かに [[DTD]] [[モジュール]] には、 > [PRE(XML code)[ ]PRE] とあります。 [[XHTML m12n]] の [CODE(HTMLa)@en[[[profile]]]] は [[HTML 4]] の [CODE(HTMLa)@en[[[profile]]]] とは別の[[属性]]のようです。 [51] >>47 のような定義になっており、かつ [[XHTML 1.1]] や [[XHTML-Print]] の[[DTD駆動器]]では [CODE(XML)@en[%[[XHTML.profile]];]] が[[空文字列]]として定義されているので、それらの [[DTD]] を[[参照]]している[[文書]]では [CODE(HTMLa)@en[[[profile]]]] [[属性]]の[[既定値]]は[[空文字列]]になってしまいます。[[属性値]]は [[URI]] らしいので、[[基底URI]]が[[文書プロファイル]]とやらとして指定されていることになってしまいます。 ([[名無しさん]]) [57] [CITE@ja[[markup]head要素のprofile属性]] ([[名無しさん]] [WEAK[2007-05-17 11:12:12 +00:00]]) [[#comment]] ** プロファイル [18] によれば、利用者エージェントは [CODE(HTMLa)[profile]] URI を2種類の方法で利用できます。 :大域固有名:[CODE(HTMLa)[profile]] URI を名前として扱い、そのプロファイル [WEAK[(別にそれを URL として資源取り出しに使う必要はない。)]] の知識を使って何かするとか。 [[XML名前空間]]の[[名前空間名]]のような使い方。 :[[リンク]]:[CODE(HTMLa)[profile]] URI を資源取り出しに使って、その実際の定義に基づいて何かするとか。 [19] [CITE[[[HTMLメタ情報プロファイル]]]]の項もご覧下さい。 [[#comment]] *** 相対 URI 参照 [20] HTML 4 では、[[相対URI参照]]が認められるのかどうか明記されてはいませんが、 HTML 4 における「URI」の定義からすると認められるとみなすのが適当でしょうね。 実際上は [[XML名前空間]]の[[名前空間名]]と同じように、 相対 URI 参照は使わないことにした方が都合がいいかもしれません。 [WEAK[(たとえば [[CSS]] の[[選択子]]に使うこととか考えると。)]] [21] 相対 URI 参照が使われていたとして、 何を基底としたらよいのでしょう。 [[HTTP]] や [[MIME]] のような上位プロトコルの情報はもちろん (必要なら) 使うとして、 あるいは [[XML]] 応用であれば (その定義に依っては) [CODE(XML)[[[xml]]:[[base]]]] 属性を考慮してもよいかもしれませんが、 それよりもなによりも、 HTML の [CODE(HTMLe)[[[base]]]] 要素の影響がどうなるか気になるところ。 [27] [CODE(HTMLe)[base]] 要素の規定 () には、 [CODE(HTMLa)[profile]] への適用を妨害するものは何もないようです。 但し、[[相対URI参照]]よりも [CODE(HTMLe)[[[base]]]] 要素による[[基底URI]] の定義は[[文書順]]で先に無ければならないことになっていますが、 [CODE(HTMLe)[base]] 要素を [CODE(HTMLe)[head]] 要素よりも前に持ってくることは不可能です。 [[#comment]] *** 実際に使われている Profile [1] [CITE[[[HTMLメタ情報プロファイル]]]]に移動しました。 ** 歴史 @@ HTML4 & XHTML1 の定義に関してはすべてこの項に移動する [16] 実際には [CODE(HTMLe)[[[head]]]] 要素の属性というよりは文書全体を通した属性とする方が適切であるので、 [[XHTML 2]] では [CODE(HTMLe)[[[html]]]] 要素の属性になります。 [49] @@ [[XHTML 2.0]] [[WD]] はその後 [CODE(HTMLa)@en[[[rel]]]] 値に変更 @@ [[GRDDL]] との関係を簡潔に *** microformats & HTML5 [53] [CODE(HTMLa)@en[[[profile]]]] [[URI]] が指すものは実質的に未定義でしたが、 [[Tantek Çelik]] は 2003年、 [[XMDP]] という書式を提案します。 [[XMDP]] は [[HTML]] をベースにした書式で、 [[プロファイル]]を記述するための[[要素]]や [CODE(HTMLa)@en[[[class]]]] [[属性]]の使い方を定めていました。 [54] 更に、 [[HTML 4]] で挙げられた [CODE(HTMLe)@en[[[meta]]]] [CODE(HTMLa)@en[[[name]]]] や[[リンク型]]だけではなく、 [[クラス名]]をも[[プロファイル]]として定義することが提案されました。 [[XMDP]] は [[microformats]] の記述言語として、 またそれ自体が最初の [[microformats]] として注目されることになります。 [55] [[Web Applications 1.0]] は当初から [CODE(HTMLa)@en[[[profile]]]] [[属性]]についての部分で [[XMDP]] に言及していました。 2004年末頃 (要確認) に [CODE(HTMLa)@en[[[profile]]]] [[属性]]が正式に再定義されましたが、 [[microformats]] をはじめとした [CODE(HTMLa)@en[[[profile]]]] [[属性]]の再評価を踏まえ、より詳細な定義が与えられていました。 例えば、 [[HTML 4]] は複数の [[URI]] を指定することを認めていましたが、 その意味は未定義としていました。 [[Web Applications 1.0]] は複数の [[URI]] が指定された時の[[リンク型]]などの解釈を定めました。 [56] ですが、 [CODE(HTMLa)@en[[[profile]]]] [[属性]]はその後もよく使われるようにはなりませんでした。 [[microformats]] の [[XMDP]] [[プロファイル]]も、 [[URI]] を指定可能な形では提供されておらず、 事実上使われていませんでした。 [52] 結局 [CODE(HTMLa)@en[[[profile]]]] [[属性]]は2006年12月頃に [[Web Applications 1.0]] ([[HTML 5]]) から削除されました。 [[Ian Hickson]] は、2年前に [[HTML 5]] で [[HTML 4]] より厳密に [CODE(HTMLa)@en[[[profile]]]] を定義し直したが、結局誰も使っていない、 [CODE(HTMLa)@en[[[profile]]]] は機能しなかった、 と説明しています。 ([[名無しさん]] [WEAK[2006-12-12 08:44:32 +00:00]]) [61] [CODE(HTMLa)@en[[[profile]]]] [[属性]]は [[HTML 5]] revision 422 で削除されました。 [CITE@en[(X)HTML5 Tracking]] ([CODE[2008-03-22 12:01:27 +09:00]] 版) ([[名無しさん]]) [62] [CODE(HTMLa)@en[[[profile]]]] [[属性]]は [[HTML 5]] revision 422 で削除されました。 [CITE@en[(X)HTML5 Tracking]] ([TIME[2008-03-22 12:01:27 +09:00]] 版) ([[名無しさん]]) [[#comment]] ** 実装 @@ 属性値の項の実装関係の記述をこちらに移動する @@ [CODE(HTMLa)@en[[[profile]]]] をみる実装があるのか? [[#comment]] ** 利用状況 @@ 以前はまったく使われていなかった、 仕様書に従う人も知ってて無視していた @@ - 少し状況が変わって、プロファイルが沢山作られた - 未だにまったく使われていないと主張する人もいるが、あたらない - だけど絶対数として少ないのは事実、 現実問題として使い道がないし [[#comment]] ** メモ [50] [CITE@en[XHTML-Print]] ([CODE[2006-09-25 23:44:03 +09:00]] 版) [[XHTML-Print]] は [[XHTML m12n 1.0]] に基づく[[プロファイル]]で、 [CODE(HTMLa)@en[[[profile]]]] の[[属性値]]を ([[XHTML m12n 1.0]] 同様に) [[URI]] 型としています。 [CODE(HTMLa)@en[[[profile]]]] の実装は [['''MAY''']] ですが、[[メタデータ]]に対応する[[印刷機]]は対応しなければならない ([['''MUST''']]) としています。 [Q[[[メタデータ]]に対応する]]とはどういうことか、 [CODE(HTMLa)@en[[[profile]]]] に[Q[対応する]]とはどういうことかは明らかではありません。 ;; この部分だけを見ると、 [[HTML 4]] の定義に基づいた規定のように思えます。 [[DTD]] 実装は当然 [[XHTML m12n 1.0]] の[[モジュール]]を採用しています。 その [[DTD]] [[モジュール]]で [CODE(HTMLa)@en[[[profile]]]] の[[既定値]]とされている[[引数実体]] [CODE(XML)@en[%[[XHTML.profile]];]] は、 [[XHTML-Print]] の [[DTD駆動器]]でも [[XHTML 1.1]] 同様に[[空文字列]]になっており、[[実体宣言]]直前の[[注釈]]にはやはり[Q[将来利用するため予約]]と書かれています。 ;; この部分を見ると (当然) [[XHTML m12n]] の定義に基づいているように見えますが、 [[媒体型]]の [CODE(MIME)@en[[[profile]]]] [[引数]]の方のために定義されている[[プロファイル]] [[URI]] がここで使われていないのが謎です。 ([[名無しさん]]) [58] [CITE[userstyles.org]] ([CODE[2007-06-24 15:42:12 +09:00]] 版) > [PRE(HTML old example code)[ ]PRE] ([[名無しさん]]) [59] [CITE@en[GRDDL WG: Do not deprecate the profile attribute]] ([[Harry Halpin]] 著, [CODE[2007-07-25 10:02:41 +09:00]] 版) ([[名無しさん]]) [60] [CITE@en[XHTML2 WG Weekly Teleconference -- 19 Sep 2007]] ([CODE[2007-09-20 23:13:51 +09:00]] 版) ([[名無しさん]]) [[#comment]] * [CODE(MIME)@en[profile]] 引数 ([CODE(MIME)@en[application/xhtml+xml]], [CODE(MIME)@en[application/smil+xml]], [CODE(MIME)@en[application/smil]]) [23] [[XHTML]] の[[媒体型]] [CODE(MIME)@en[[[application/xhtml+xml]]]], [[SMIL]] の[[媒体型]] [CODE(MIME)@en[[[application/smil+xml]]]], [CODE(MIME)@en[[[application/smil]]]] で定義されている[[引数]] [DFN@en[[CODE(MIME)@en[[[profile]]]]]] は、[[名札付け]]された[[実体]]が使用している[[マーク付け言語]]の[[プロファイル]]を指定します。 [42] :[[媒体型]]:[CODE(MIME)@en[[[application/xhtml+xml]]]], [CODE(MIME)@en[[[application/smil+xml]]]], [CODE(MIME)@en[[[application/smil]]]] :[[引数名]]:[CODE(MIME)@en[[[profile]]]] ([Q@en[[[profile]]]] ([Q@en[[[プロファイル]]]]) より) :[[引数値]]:[[URI]] :[[既定値]]:([[プロファイル]]指定なし) :状態:[[IETF]] [[情報提供]] [[RFC]] [41] 仕様書: - [[RFC 4536]] ([CODE(MIME)@en[[[application/smil+xml]]]], [CODE(MIME)@en[[[application/smil]]]]) ([[IETF]] [[情報提供]] [[RFC]]) -- [CSECTION@en[5. The [CODE(MIME)@en[[[profile]]]] Optional Parameter]] [43] この[[引数]]は、[[内容折衝]]で受信側の能力を示すために使う [WEAK[(例えば [CODE(HTTP)@en[[[Accept]]:]] で使う)]] ことを想定しています。 特に、形式の変換を行う[[串]]が使うことを想定しています。 送信側が[[実体]]に[[名札付け]]するために使う [WEAK[(例えば [CODE(MIME)@en[[[Content-Type]]:]]]] で使う)]] ことは想定していません。 [SRC@en[[[RFC 4536]] 5.]] [[#comment]] ** 関連 [45] [CODE(MIME)@en[[[profile]]]] [[引数]]は、 [[CC/PP]] が使われるようになるまでのつなぎです。 [SRC@en[[[RFC 4536]] 5.]] [29] いくらつなぎ規格だからと言っても、提案している当の W3C の規格 (XHTML 1.0 とか 1.1 とか SMIL 2.0 とか SMIL Basic とか) の [CODE(MIME)[profile]] URI が規定されていないあたり、やる気がまったく感じられませぬ。 [46] [[CC/PP]] も失敗色が。。。 [[#comment]] ** 例 [13] [CODE(URI)[http://www.wapforum.org/xhtml]] : [[XHTML Mobile Profile]] ( 7.2 参照) [12] : の。 [44] 例 [SRC@en[[[RFC 4536]] 5.]] [PRE(HTTP example code)[ Accept: application/smil+xml; profile="http://www.w3.org/2001/SMIL20/HostLanguage" ]PRE] [[#comment]] ** メモ [[#comment]] * メモ