* 根要素 - [1] 【[[SGML]]】 [[要素木]]の一番根元に当たる[[要素]]。すなわち[[文書要素]]であり、 [[SGML文書]]には必ず、それもちょうど1つだけ存在する。 Root element。 - [2] その名の通り[[文書]]の木構造の一番大元となる要素なのですが、実際には文書要素の外に[[文書型宣言]]や[[処理指令]]や[[注釈]]があったりもします。それらも含めてモデル化すると、根要素よりも更に上位の階層が出現することがあります。[WEAK[(例えば [[XPath]] では[[根節]]があり、根要素はその子供です。)]] * 文書要素 [13] [[文書要素]]は、[[文書]]の[[要素木]]におけるもっとも上側 (外側) にある、 [[文書]]の[[子供]]であるような[[要素]]です。[[文書]]は直接の[[子要素]]を1つだけ持てるので、 (正常な状態では) [[文書要素]]は1つだけ存在します。[[文書要素]]は[[根要素]]と同じものとなります。 ** 仕様書 [REFS[ - [11] [CITE@en-US[DOM4]] ([TIME[2011-09-26 12:32:56 +09:00]] 版) ]REFS] ** DOM における定義 [12] [DFN[[RUBYB[[[文書要素]]]@en[document element]]]]は、[[文書]]が[[親]]である[[要素]]があればそれ、なければ [[null]] です。 このような[[要素]]は[[文書]]中にたかだか1つだけ存在します。 [SRC[>>11]] ** XML における定義 [FIG[ [FIGCAPTION[ [18] [CITE@EN[Extensible Markup Language (XML) 1.0 (Fifth Edition)]] ([TIME[2013-05-28 20:49:56 +09:00]] 版) ]FIGCAPTION] > There is exactly one element, called the [DFN[root]], or document element, no part of which appears in the content of any other element. ]FIG] ** SGML における定義 [FIG[ [2] > :[DFN[[RUBYB[文書要素]@en[document element]]]]: [[文書型]]の[[実現値]]の最も外側にある[[要素]]であって、 その要素の[[共通識別子]]となる[[文書型名]]をもつ要素。 [FIGCAPTION[ [[JIS X 4151]]‐1992 3. (240) ]FIGCAPTION] ]FIG] [4] 文書要素は[[根要素]]とも呼ばれます。 [5] [[SGML]] の文書要素の[[終了タグ]]って省略不能なの? 終了タグがないとどこで文書が終わるのか不明だとかいう説があるし、 規格の参考とかでもなんだかそんな雰囲気が漂ってる。 だけど実際問題、 [[HTML]] では [CODE(HTMLe)[[[html]]]] 要素は終了タグ省略可能だしなあ。 それに文書の終りは文書要素の終了タグじゃなくて[[ファイル]]なり[[記録]]群なりの最後のところだろうし。 * 根要素の適合性 [19] [[根要素]]の[[要素名]]と[[文書型名]]は原則一致していないといけません。詳しくは[[文書型名]]の項を参照してください。 [20] [CODE(MIME)@en[[[text/html]]]] 構文の[[文書]]や、 [[HTML文書]]の [CODE(HTMLe)@en[[[iframe]]]] [[要素]]の [CODE(HTMLa)@en[[[srcdoc]]]] [[属性]]の[[文書]]では、[[根要素]]は [CODE(HTMLe)@en[[[html]]]] [[要素]]でなければならないことになっています。逆に [[HTMLの構文解析器]]の方も [CODE(HTMLe)@en[[[html]]]] [[要素]]を自動的に作り、他のすべての[[要素]]や[[テキスト]]をその中に入れるので、これらの[[文書]]で [CODE(HTMLe)@en[[[html]]]] 以外の[[根要素]]が生じることはありません。 [21] [[XML]] 本体仕様では、 >>19 の[[妥当性制約]]を除けば[[根要素]]についての制約はありません。 [22] >>20 の通り文字列としての [CODE(MIME)@en[[[text/html]]]] [[文書]]は必ず [CODE(HTMLe)@en[[[html]]]] が[[根要素]]となりますが、これは [[DOM]] についての規定ではありませんから、 [[スクリプト]]等によって他の[[要素]]に差し替えられたり、[[根要素]]自体が削除されたりする可能性はあり、 特にそれが不適合ともされていません。 [26] >>25 により[[要素]]は明示的に認められている場所以外では使えませんから、 [[根要素]]として使えるのも、[[根要素]]として認められているものに限定されます。 [23] [CODE(HTMLe)@en[[[html]]]] [[要素]]の説明 [SRC[>>24]] では[[文書]]の[[根要素]]として使えるとありますが、 この部分は[[参考]]であり、他に[[規定]]として記述しているところは (>>20 を除けば) ありません。 [[HTML]] では他に[[根要素]]として使える[[要素]]はありません。 [REFS[ - [24] - [25] ]REFS] * [CODE(JS)@en[document.documentElement]] (DOM) [6] [CODE(DOMi)@en[[[Document]]]] [[オブジェクト]]の [CODE(DOMa)@en[[[documentElement]]]] [[属性]]は、[[文書要素]]を返さ[['''なければなりません''']] [SRC[>>10]]。 ** 仕様書 [REFS[ - [10] [CITE@en-US[DOM4]] ([TIME[2011-09-26 12:31:14 +09:00]] 版) ]REFS] ** 歴史 [REFS[ -[8] [DOM1] [CITE@en[Document Object Model (Core) Level 1]] ]REFS] * [CODE(CSS)@en[:root]] 疑似クラス [15] [DFN[[CODE(CSS)@en[[[:root]]]]]] は[[文書]]の[[根]]である[[要素]]を表します [SRC[>>9]]。 ** 仕様書 [REFS[ - [9] [CITE@en[Selectors Level 3]] ([TIME[2009-12-14 23:41:18 +09:00]] 版) ]REFS] ** 歴史 *** 選択子3 [REFS[ - [16] [CITE[CSS3 module: W3C selectors]] ([TIME[2000-03-13 23:37:32 +09:00]] 版) ]REFS] [17] [[選択子3]]の最初の公開案である >>16 には既に [CODE(CSS)@en[[[:root]]]] が含まれていました。 ** メモ [3] [CITE@en[Matching :root in Document Fragments]] ([[Lachlan Hunt]] 著, [TIME[2007-06-21 23:31:00 +09:00]] 版) ([[名無しさん]] [WEAK[2007-06-21 15:17:56 +00:00]]) * 関連 [14] [[文書要素]]・[[根要素]]は[[要素]]だけの[[木構造]]を考えると最上位にあり、 [[根]]ですが、[[文書節点]]も含めた[[文書]]全体の構造の中では[[文書節点]]の[[子供]]であるため、 [[根]]ではありません。[[根''要素'']]ではなく[[根''節点'']]と呼ぶと[[文書]]全体の[[根]]を指すため、 [[文書要素]]とは違う意味になります。