* head 要素型 (HTML, XHTML 1)
[3] [ABBR[[[HTML]]][Hypertext Markup Language]] の
[CODE(HTMLe)[head]] 要素は、
[[文書]]の[[内容]]とはみなされない文書に関する情報
([[メタ情報]]) を記述するのに使います。
[11]
仕様書:
- [[HTML 2.0]]: [[RFC 1868]]
-- [CITE[5.2. Head: HEAD]]
- [[HTML 4]]
--
[5]
:[[開始タグ]]:省略可能 (HTML 2, HTML 4) または必須 (XHTML 1)
:[[終了タグ]]:省略可能 (HTML 2, HTML 4) または必須 (XHTML 1)
:[[内容模型]]:[CODE(SGML)[([CODE(HTMLe)[[[title]]]] & [CODE(HTMLe)[[[base]]]]?) +([VAR[%[[head.misc]]]])]]
:出現できる文脈:[CODE(HTMLe)[[[html]]]] 第1子要素
:[[属性]]:
,属性名 ,属性値型 ,既定値 ,意味 ,出典
,[CODE(HTMLa)[[[lang]]]] ,[[言語札]] ,(継承) ,[[自然言語]] ,"[HTML 4], [XHTML 1]"
,[CODE(HTMLa)[[[xml]]:lang]] ,言語札 ,(継承) ,自然言語 ,[XHTML 1]
,[CODE(HTMLa)[[[profile]]]] ,[CODE(ABNF)[[[URI参照]] *([[空白]] URI参照)]] ,(なし) ,メタ情報の辞書 ,"[HTML 4], [XHTML 1]"
[[#comment]]
** 内容模型
[6] [ABBR[HTML][Hypertext Markup Language]] 4 などでは、
[[内容模型]]の表現に[[添加要素指定]]が使われていて少々分かりにくくなっていますが、
その主張は簡単なことで、
[Q[すべての要素の出現順序は無制限。 [CODE(HTMLe)[[[title]]]] は丁度1つ必要。 [CODE(HTMLe)[[[base]]]] は高々1つ必要。他は任意個 OK。]]
です。
ただし、 [ABBR[DTD][文書型定義]] に現れない仕様書本文での制限で、
[CODE(HTMLa)[[[http-equiv]]]] 属性が [CODE(HTTP)[[[Content-Type]]]]
である [CODE(HTMLe)[[[meta]]]]
を使う時は可能な限りはじめの方にいれることになっています
[SRC[HTML 4]]。
[7] 古い時代の [ABBR[DTD][文書型定義]] 案では、 [CODE(HTMLe)[title]]
が必須でなかったこともありました。
実際の文書では今でも [CODE(HTMLe)[title]]
が欠けていることがしばしばあります。
また、 [CODE(HTMLe)[base]] が
[WEAK[([CODE(HTMLa)[[[href]]]] と [CODE(HTMLa)[[[target]]]] などで)]]
複数あることもたまにあります。
[[#comment]]
** レンダリング
[4] [ABBR[[[UA]]][利用者エージェント]]
は通常この要素の内容を[[レンダリング]]しませんが、
何らかの手段で[[利用者]]にその情報を提示しても構いません
[SRC[HTML 4]]。
メタ情報の重要性が説かれる現在では、
汎用 [ABBR[UA][利用者エージェント]]
はむしろその手段を積極的に用意する'''べき'''でしょう。
[CODE(HTMLe)[title]] 要素、 [CODE(HTMLe)[[[style]]]] 要素のように、
[[内容]]を持ち得る要素が含まれ得ますから、
それらを通常の表示モードでレンダリングすることが無いように注意が必要です。
[CODE(HTMLe)[head]] 要素内では [CODE(HTMLe)[[[object]]]]
要素も使えますが、その[[物体]]または[[代替内容]]も表示しないように注意する必要があります。
[[#comment]]
** 歴史
[8] 一番初めの [ABBR[[[SGML]]][標準一般化マーク付け言語]]
もどきな頃の [ABBR[HTML][ハイパーテキスト・マーク付け言語]] に
[CODE(HTMLe)[head]] 要素型はありませんでした。
その後 [ABBR[[[SGML]]][標準一般化マーク付け言語]]
的形式を整えるに当たって、
本文そのものではない [CODE(HTMLe)[title]]
要素を収納する要素が考えられました。
[ABBR[[[Dan Connolly]]][Daniel W. Connolly]] は、
新しい要素型の導入にあたって、
次のようなことを言っています。
> [CODE(HTMLe)[document]] は文書の[Q[本体]]
のほとんどを含みます。これで[[混合内容]]の問題を解決できます。
この要素を [CODE(HTMLe)[body]] という名前にして、
[CODE(HTMLe)[title]] や [CODE(HTMLe)[[[nextid]]]] や
[CODE(HTMLe)[[[isindex]]]] を囲む省略可能な [CODE(HTMLe)[[[header]]]]
を導入することもできます。 [INS[(1992年11月19日 )]]
混合内容の問題と言うのは、後に [CODE(HTMLe)[[[fieldset]]]]
などでもかかわることになる、ある意味で因縁の問題です。
当時の [ABBR[HTML][ハイパーテキスト・マーク付け言語]]
の書式を素直に記述すると、
[CODE(SGML)[((TITLE? & ISINDEX?), (H1|H2|DL|OL|XMP|#PCDATA)+)]]
になります。ところが、これは[[混合内容]]になってしまいます。
[ABBR[[[SGML]]][標準一般化マーク付け言語]] の仕様上、
[CODE(HTMLe)[title]] 要素や
[CODE(HTMLe)[isindex]] 要素の前に [CODE(SGML)[[[s]]]]
を入れることができなくなってしまうのです。
これへの対策はタグが省略可能なダミーの要素を
[CODE(SGML)[[[PCDATA]]]] が含まれる部分に入れるのが定石で、
それを [ABBR[Dan][Dan Connolly]] は [CODE(HTMLe)[document]] or
[CODE(HTMLe)[body]] にしようと言っています。
これに対して、 [ABBR[[[TimBL]]][Tim Berners‐Lee]] が、
> 後者がいいですね。 Header と Body というのはメイルの名付け方にも似ていますし。 [INS[(1992年11月19日 )]]
と答えております。その後 [ABBR[[[TimBL]]][Tim Berners‐Lee]] が
> [CODE(HTMLe)[header]] と [CODE(HTMLe)[body]] も [INS[(DTD に)]]
入れて欲しいです。 [INS[(1992年12月1日 )]]
と言いますと、 [ABBR[Dan][Dan Connolly]] は、
ずっと取り組んでいるけどうまくいかないと答えています。
(1992年12月1日 )
この時 [ABBR[Dan][Dan Connolly]] が考えていた文書の構造は
[CODE(SGML)[]]
でした。
この内容模型の前半部分を [CODE(HTMLe)[header]] 要素にした時に、
既存データとの互換性のために、
- [CODE(HTMLe)[header]] のタグは省略可能
- [CODE(HTMLe)[title]] など3種類の要素が任意の順序で、
いずれについても高々1個認められる
という要件を満たす [ABBR[DTD][文書型定義]]
を書くのに苦心していた模様です。
同じ日の
では、諦めて [CODE(HTMLe)[title]] を文書中どこでも良いことにしちゃえ! とか、
上位プロトコルの [CODE(822)[[[Subject]]]] とか使えばいいじゃん!
なんて言ってます。
更に同じ日の
では、 [ABBR[Tim][Tim Berners‐Lee]] は [CODE(HTMLe)[header]]
や [CODE(HTMLe)[body]] を使ってるけど、
その方法だと既存の文書と互換な [ABBR[DTD][文書型定義]]
が書けないよと嘆いてます。
しばらくして、 12月4日の
では、構造が壊れてしまうものの、
[CODE(HTMLe)[head]] と [CODE(HTMLe)[body]]
を既存の文書と互換に追加する方法を思いついたと書いています。
(ここでなぜか [CODE(HTMLe)[header]] が
[CODE(HTMLe)[head]] に変わっています。)
その方法はメイルには書かれていないのですが、
12月3日の [ABBR[Dan][Dan Connolly]] の [CODE(file)[html.dtd]]
には次のようにあります。
[PRE(SGML)[
]PRE]
[9]
1993年1月11日の [ABBR[Dan][Dan Connolly]] の では [CODE(HTMLe)[header]] を出力するプログラムを [CODE(HTMLe)[head]] に修正するように言っています。すぐ後に [ABBR[Tim][Tim Berners‐Lee]]
が何も言わずに修正しています。
[10]
1993年4月9日の Dan の [CODE(file)[html.dtd]] から、
[PRE(SGML)[
]]>
]PRE]
で [CODE(HTMLe)[head]] も [CODE(HTMLe)[body]]
もタグ省略可能な現在と同じ形の宣言になりました。
(初めからこうしておけばよかったと思うのですが、
[ABBR[Dan][Dan Connolly]] が最初に試した当時の [[sgmls]]
ではうまく通らなかったのでしょうか?)
* 文書 [CODE(HTMLe)@en[head]] 要素、[CODE(JS)@en[document.head]]
[22] [CODE(HTMLe)@en[[[head]]]] [[要素]]の第1[[子要素]]たる [CODE(HTMLe)@en[[[head]]]]
[[要素]]を[DFN[[RUBYB[文書 [CODE(HTMLe)@en[head]] 要素]@en[the [CODE(HTMLe)@en[head]] element]]]]といいます。
[23] [CODE(DOMi)@en[[[Document]]]] [[オブジェクト]]の [DFN[[CODE(DOMa)@en[[[head]]]]]]
[[属性]]は、[[取得時]]に[[文書[CODE(HTMLe)@en[head]]要素]]を返します。
** 歴史
[20]
[CITE@en[Web Applications 1.0 r4082 Add document.head.]] ([TIME[2009-10-06 08:32:00 +09:00]] 版)
* [CODE(XMLe)@en[head]] 要素 (SMIL)
[12] [[SMIL]] の [DFN[[CODE(XMLe)@en[[[head]]]] [[要素]]]]は、時間的な動作に関係のない情報を含める[[要素]]です
[SRC[[[SMIL 1.0]]]]。
:[[要素名]]:[CODE(XMLe)@en[[[head]]]] (おそらく [[HTML]] [CODE(HTMLe)@en[[[head]]]] より)
:[[内容モデル]]:[CODE(XMLe)@en[[[layout]]]] または
[CODE(XMLe)@en[[[switch]]]] のいずれかと、零個以上の [CODE(XMLe)@en[[[meta]]]] の両方
[SRC@en[[[SMIL 1.0]]]]
:[[属性]]:[CODE(XMLa)@en[[[id]]]]
-[[SMIL 1.0]] ([[W3C]] [[勧告]])
--[CSECTION@en[3.1 The [CODE(XMLe)@en[head]] Element]]
* [CODE(XMLe)@en[head]] 要素 (OPML)
[13] [[OPML]] の [DFN[[CODE(XMLe)@en[head]] [[要素]]]]は、[[文書]]全体に関係する情報を含める[[要素]]です。
[14]
:[[局所名]]:[CODE(XMLe)@en[[[head]]]]
:文脈:[CODE(XMLe)@en[[[opml]]]] の[[子要素]]として
:[[内容モデル]]:0個以上の[[子要素]]
:[[属性]]:
[15]
仕様書:
-[CITE[OPML 1.0 Specification]] ([TIME[2008-12-02 16:47:13 +09:00]] 版)
** 内容モデル
[16] [[OPML 1.0]] によると、次の[[子要素]]を0個以上指定できます。
- [CODE(XMLe)@en[[[dateCreated]]]]
- [CODE(XMLe)@en[[[dateModified]]]]
- [CODE(XMLe)@en[[[expansionState]]]]
- [CODE(XMLe)@en[[[ownerName]]]]
- [CODE(XMLe)@en[[[owenrEmail]]]]
- [CODE(XMLe)@en[[[title]]]]
- [CODE(XMLe)@en[[[vertScrollState]]]]
- [CODE(XMLe)@en[[[windowBottom]]]]
- [CODE(XMLe)@en[[[windowLeft]]]]
- [CODE(XMLe)@en[[[windowRight]]]]
- [CODE(XMLe)@en[[[windowTop]]]]
[17] どの[[要素]]も1個だけしか出現するべきではないと思うのですが、特にそういう規定はないみたいです。
** 処理モデル
[18] どの[[子要素]]も無視してかまいません。 [SRC@en[[[OPML 1.0]]]]
* [CODE(XMLe)@en[head]] 要素 (XFrames)
[21] [CITE@en[XFrames]] ([TIME[2010-12-17 00:45:08 +09:00]] 版)
* メモ
[19] [CITE@ja[ちょっとしたメモ - いろいろなAtom]] ([[Masahide Kanzaki]] 著, [TIME[2008-05-28 09:21:23 +09:00]] 版)
[24] [CITE[''''''[''''''whatwg'''''']'''''' Fwd: Allow Select SVG Elements In ]]
( ([TIME[2011-12-22 23:20:49 +09:00]] 版))