* meta 要素型 (HTML, XHTML 1)
[40] [[HTML]] で[[メタ情報]]を扱う方法は2通りあります。
情報が文書内にあれば [CODE(HTMLe)[meta]] 要素型を、
文書内外の参照であれば [CODE(HTMLe)[[[link]]]]
要素型を使うことができます [SRC[HTML 4]]。
[43] 仕様書:
- [[HTML 2.0]]: [[RFC 1866]] 5.2.5. Associated Meta-information: META
- [[HTML 4]]
--
--
[39]
:[[開始タグ]]:必須
:[[終了タグ]] (HTML 2, HTML 4):禁止
:終了タグ (XHTML 1):必須
:[[内容]]:空 ([[強制空要素]])
:[[属性]]:
,属性名,属性値,既定値,説明,出典
,[CODE(HTMLa)[[[content]]]] ,[CODE(SGML)[[[CDATA]]]] ,(必須) ,メタ情報 ,"[HTML 2.0], [HTML4], [XHTML1]"
,[CODE(HTMLa)[[[dir]]]] , , ,[[書字方向]] ,"[HTML4], [XHTML1]"
,[CODE(HTMLa)[[[http-equiv]]]] ,[CODE(ABNF)[[[field-name]]]] ([CODE(SGML)[[[NAME]]]]) ,(選択必須) ,[[HTTP]] [[応答]]の[[頭欄名]] ,"[HTML 2.0], [HTML4], [XHTML1]"
,[CODE(HTMLa)[[[lang]]]] ,[[言語札]],(継承),[[自然言語]],"[HTML4], [XHTML1]"
,[CODE(HTMLa)[[[xml]]:lang]] ,言語札,(継承),自然言語,"[XHTML1]"
,[CODE(HTMLa)[[[name]]]] ,[CODE(SGML)[NAME]] ,(選択必須) ,メタ情報名 ,"[HTML 2.0], [HTML4], [XHTML1]"
,[CODE(HTMLa)[[[scheme]]]] ,[CODE(SGML)[CDATA]] ,(なし) ,内容の書式 ,"[HTML4], [XHTML1]"
[44]
[CODE(HTMLa)[dir]] 属性も [CODE(HTMLa)[lang]] 属性も、
[CODE(HTMLa)[content]] に適用されます [SRC[HTML 4]]。
[[#comment]]
** 複数の meta 要素
[45] 以前は、同じ名前 ([CODE(HTMLa)[name]]) のメタ情報が複数ある時は内容
([CODE(HTMLa)[content]]) は読点分離で連結できるとされていました
[SRC[RFC 1866 5.2.5]]。 ([CODE(HTMLa)[name]] を省略した場合のメタ情報の名前は
[CODE(HTMLa)[http-equiv]] 値です。この時、 [[HTTP]]
の頭欄の連結に関する規定と同じ結果になります。)
この規定が後になくなってしまったのは、
実際にはこの機能が使われなかったからと思われます。
[[#comment]]
** 他との関係
[46] [CODE(HTMLe)[[[title]]]] のように専用の要素型がある時には、
そちらを使うべきです [SRC[RFC 1866 5.2.5 NOTE]]。
また、値が [[URI参照]]の時は [CODE(HTMLe)[[[link]]]]
の方が適当です [SRC[RFC 1866 5.2.5 NOTE, HTML 4]]。
[47] HTTP 鯖は、 [CODE(HTMLa)[http-equiv]] 属性付きの
[CODE(HTMLe)[meta]] 要素を使って頭を作っても構いません
[SRC[RFC 1866 5.2.5, HTML 4]]。ただし、その方法は規定されていませんし、
使用することが強制されてもいません [SRC[RFC 1866 5.2.5]]。
しかし、 [CODE(HTMLa)[http-equiv]] なき [CODE(HTMLe)[meta]]
要素を生成に使ってはなりません [SRC[RFC 1866 5.2.5]]。
また、 [CODE(HTTP)[[[Date]]]], [CODE(HTTP)[[[Server]]]],
[CODE(HTTP)[[[Last-Modified]]]] のような鯖が生成する情報に関する
[CODE(HTMLe)[meta]] 情報は捨てても構いません [SRC[RFC 1866 5.2.5]]。
[[#comment]]
** メモ
[41] メタ情報の特性の名前と値として妥当なものの集合を、
HTML 4 仕様書はまったく規定していません。
そのようなものは[[プロファイル]]によって定義されます。
ですから [CODE(HTMLe)[meta]] 要素を使うときには、
([CODE(HTMLa)[http-equiv]] 属性を使ったものだけである場合を除いて)
必ず [CODE(HTMLe)[[[head]]]] 要素の
[CODE(HTMLa)[[[profile]]]] 属性が要ることになります。
とは言っても実際にはプロファイルなしで種々の値が実際にほとんど標準化せずに使われてきました。
プロファイルの使用はこのまま標準化せずにいくのは流石にまずいだろうということから設けられた努力目標のようなものでしょう。
-[1] ''META 要素あれこれ''
- [2] [[http-equiv属性]]はあまり使わないほうがいいと思うんです。。。
- [3] [[ISO15924]] は ''[[name]]''属性の値として [CODE[Content-Script]] を提案しています。 [[content]]属性の値は[[読点]] (及び *[[WSP]]) で区切った1つ以上の[[用字系]]符号です。
- [4] ''HTML META Tags''
- [5] ''META Tag Dictionary - Admiral Online'' >>4 と同じものっぽい
- [6] かつては [CODE[meta]] 要素そのものが [[HTTP]] 頭の代替のように考えられていたようです。例えば [[HTTP+]] の [[DTD]] の注釈にははっきり、 HTTP サーバーは [CODE[meta]] 要素を読んで[[頭欄]]に出来るとしています。 ([CODE[http-equiv]] 属性はまだありません!)
- [7] >>6 また、 [CODE[meta]] 要素は HTTP 頭で代替すべきであって廃止しようという考えもあったらしいです。
- [8] ''Google ページの削除''
- [9] [[http-equiv]] 属性を使っても実際に [[HTTP]] [[頭欄]]として反映させてくれるサーバーは少ないですが、例えば [[Apache]] と ''Embperl'' を使うとそうしてくれるらしいです。
- [32] ''DAISY 2.0 Specification'' : [CODE(HTML)[DC.[VAR[foo]]]] のようなのより [[XML名前空間]]的な [CODE(HTML)[DC:[VAR[foo]]]] がいい☆と言っている。
- [33] >>32 はほかに [CODE(HTML)[NCC:[VAR[foo]]]] を一杯定義しています。
- [42] [CODE(HTMLa)[name]] 属性と [CODE(HTMLa)[http-equiv]] 属性のいずれかが必ず存在しないといけません。 HTML 4 仕様書にはそう明記してないのですが、説明を読んでいくと当然そうだとしないと話になりません。 [CODE(HTMLa)[http-equiv]] は [CODE[in place of [CODE(HTMLa)[name]]]] で使えると書かれているので、これら両方を指定できないことは明記されているといえるでしょう。やや曖昧かもしれなくはありませんが。
[[#comment]]
**meta 要素の name 属性の値をとにかく例示するスレ
-[1] [[abstract]]
-[2] [[author]]
-[3] [[classification]]
-[4] [[copyright]]
-[5] [[description]] ([HTML4])
-[6] [[distribution]]
-[7] [[doc-class]]
-[8] [[doc-rights]]
-[9] [[doc-type]]
-[10] [[expires]]
-[11] [[generator]]
-[12] [[googlebot]] ([[Google]] 向け [CODE(HTML)[ROBOTS]])
-[13] [[keywords]] ([HTML4])
-[14] [[MSSmartTagsPreventParsing]] ([CODE(HTML)[true]] / [CODE(HTML)[false]])
-[15] [[owner]]
-[16] [[progid]]
-[17] [[rating]]
-[18] [[refresh]] ([[Refresh:]] 欄か?)
-[19] [[reply-to]] ([[http-equiv]] 使うべし)
-[20] [[resource-type]]
-[21] [[revisit-after]]
-[22] [[robots]] ([HTML4])
-[23] [[rating]]
-[24] [[language]]
-[25] [[subject]]
-[26] [[copyright]]
-[28] [[translator]] (W3C Validator にあった。)
-[29] [[Microsoft Theme]] ([SAMP(HTML)[blends 011, default]] M$ [[FrontPage]])
-[30] [[Microsoft Border]] ([SAMP(HTML)[tb, default]] 同上)
-[31] [[ixihook]] ([CODE(HTML)[xizhere]])
-[34] [[MS-IT-LOC]] ([SAMP(HTML)[Windows Help]] [[HTMLHelp]])
-[35] [[MS.LOCALE]] ([SAMP(HTML)[JA]])
-[36] [[MS-HAID]] ([SAMP(HTML)[a_CF_extract]] (HTMLHelp))
-[37] [[IBM:HPB-Input-Mode]] (mode/flm; pagewidth=750; pageheight=900)
-[38] [[Excel Workbook Frameset]] (少なくても [[Excel]] 10 が使用。 [CODE(HTML)[[[content]]]] 属性''存在すらなし''。)
[[#form:'%text(label=>"値",description=>"特に推奨が無ければ小文字にすべし。",size=>10,id=>value); %text(label=>参考,size=>20,id=>comment);':'-[%index;] [[%text(source=>value);]]%text(prefix=>" (",suffix=>")",source=>comment);']]
**name 属性と http-equiv 属性の等価性
[27] ''Dithered / April 2002''
の19日の記事で、その著者は、 [[WinIE]] では少なくても [[M$]]
独自拡張のものについては等価性が認められるという説を、
[[ImageToolbar:]] 欄で反例を挙げて否定しています。
この結論について異論はありませんが、 WinIE 6.0 で同時に追加された
[CODE(HTTP)[ImageToolbar:]] と [[MSThemeCompatible:]]
の両欄で実装が異なる (両欄の説明参照。) という実験事実から考察すると、
M$IE のその辺の実装は行き当たりばったりで法則性は無いと考えられます。
[40] [[M$DN]] の記事によると、
[CODE(HTTP)[[[Pragma]]]] とかでは HTML でも HTTP 頭でも認識するけど
[CODE(HTTP)[[[Cache-Control]]]] は HTTP 頭じゃないと認識しないようにわざとしているとか。
だからまったく何も考えていないで行き当たりばったりというわけでもない、と。
[[#comment]]
* メモ