* 仕様書

[REFS[
- [37] [CITE@en[DOM Standard]] ([TIME[2016-03-18 23:26:01 +09:00]] 版) <https://dom.spec.whatwg.org/#document-element>
]REFS]

* 根要素

- [1] 【[[SGML]]】 [[要素木]]の一番根元に当たる[[要素]]。すなわち[[文書要素]]であり、 [[SGML文書]]には必ず、それもちょうど1つだけ存在する。 Root element。
- [2] その名の通り[[文書]]の木構造の一番大元となる要素なのですが、実際には文書要素の外に[[文書型宣言]]や[[処理指令]]や[[注釈]]があったりもします。それらも含めてモデル化すると、根要素よりも更に上位の階層が出現することがあります。[WEAK[(例えば [[XPath]] では[[根節]]があり、根要素はその子供です。)]]

* 文書要素

[13] [[文書要素]]は、[[文書]]の[[要素木]]におけるもっとも上側 (外側) にある、
[[文書]]の[[子供]]であるような[[要素]]です。[[文書]]は直接の[[子要素]]を1つだけ持てるので、
(正常な状態では) [[文書要素]]は1つだけ存在します。[[文書要素]]は[[根要素]]と同じものとなります。

** DOM における定義

[12] [[文書]]の[F[[DFN[[RUBYB[[[文書要素]]]@en[document element]]]]]]は、
当該[[文書]]が[F[親]]であるような[[要素]]か、それがなければ [[null]] です [SRC[>>37]]。

;; [38] [[文書]]の[F[子供]]の制約から、そのような[[要素]]はあるとしたら1つだけです。

** XML における定義

[FIG[
[FIGCAPTION[
[18] [CITE@EN[Extensible Markup Language (XML) 1.0 (Fifth Edition)]] ([TIME[2013-05-28 20:49:56 +09:00]] 版) <http://www.w3.org/TR/xml/#dt-root>
]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]]]] 要素は終了タグ省略可能だしなあ。
それに文書の終りは文書要素の終了タグじゃなくて[[ファイル]]なり[[記録]]群なりの最後のところだろうし。

[39] 
[[基底文書要素]]

** 文書要素の要素名

[SEE[ [[文書型名]] ]]

* 根要素の適合性

[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]] では他に[[根要素]]として使える[[要素]]はありません。

[31] [[RDF/XML]] とみなされる[[文書]]にあっては、 [CODE(XMLe)@en[[[rdf:RDF]]]] [[要素]]の他に、
[CODE@en[[[nodeElement]]]] に合致する[[要素]]も[[根要素]]とすることができます [SRC[>>30]]。
すなわち、 [CODE(XMLe)@en[[[rdf:Description]]]] の他、 [CODE@en[[[rdf:type]]]]
として使われる任意の [[RDF URI参照]]を[[展開URI]]とするような[[要素]]が使えます。

;; [32] どんな[[文書]]が [[RDF/XML]] とみなされるかは、 [[RDF/XML]] の項を参照してください。

[34] [[XSLT]] では[[リテラル結果要素]]を[[根要素]]として使うことができます [SRC[>>33]]。
すなわち、 [[XSLT]] 以外の[[名前空間]]の[[要素]]を[[根要素]]にできます。ただしその場合
[CODE(XMLa)@en[[[xsl:version]]]] [[属性]]が必須となっています [SRC[>>33]]。
なお、 [CODE(MIME)@en[[[text/xml]]]] や [CODE(MIME)@en[[[application/xml]]]]
など [[XSLT]] だと断定できない場面ではこの方法を使用するべきではないとされています [SRC[>>33]]。

[REFS[
- [24] <http://www.whatwg.org/specs/web-apps/current-work/#the-html-element>
- [25] <http://www.whatwg.org/specs/web-apps/current-work/#content-models>
- [27] [CITE[Scalable Vector Graphics (SVG) 2]] ([TIME[2013-11-22 14:04:16 +09:00]] 版) <https://svgwg.org/svg2-draft/single-page.html#struct-NewDocument>
- [29] [CITE[MathML Fundamentals]] ([TIME[2010-10-20 20:51:46 +09:00]] 版) <http://www.w3.org/TR/MathML/chapter2.html#interf.toplevel>
- [30] [CITE@en[RDF/XML Syntax Specification (Revised)]] ([TIME[2004-02-10 15:29:31 +09:00]] 版) <http://www.w3.org/TR/rdf-syntax-grammar/#start>
- [33] [CITE[XSL Transformations (XSLT)]] ([TIME[2003-05-14 14:32:34 +09:00]] 版) <http://www.w3.org/TR/xslt#stylesheet-element>
]REFS]

[FIG[
[FIGCAPTION[
[28] [[根要素]]として使える主な[[要素]]
]FIGCAPTION]

- [CODE(HTMLe)@en[[[html]]]] [SRC[>>24]]
- [CODE(XMLe)@en[[[svg]]]] [SRC[>>27]]
- [CODE(XMLe)@en[[[math]]]] [SRC[>>29]]
- [CODE(XMLe)@en[[[rdf:RDF]]]] [SRC[>>30]]
- [CODE(XMLe)@en[[[xsl:stylesheet]]]] [SRC[>>33]]
- [CODE(XMLe)@en[[[xsl:transform]]]] [SRC[>>33]]
- [CODE(XMLe)@en[[[rss]]]] ([[RSS 2.0]])
- [CODE(XMLe)@en[[[atom:feed]]]]
- [CODE(XMLe)@en[[[atom:entry]]]]
- [CODE(XMLe)@en[[[at:deleted-entry]]]]
]FIG]

[35] [[根要素]]の一覧データは [CITE[manakai/data-web-defs]] ([TIME[2013-12-01 05:28:03 +09:00]] 版) <https://github.com/manakai/data-web-defs/> の elements.json に含まれています。

* [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]] 版) <http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-document-documentelement>
]REFS]

** 歴史

[REFS[
-[8] [DOM1] [CITE@en[Document Object Model (Core) Level 1]]
<http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#attribute-documentElement>
]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]] 版) <http://www.w3.org/TR/css3-selectors/#root-pseudo>
]REFS]

** 歴史

*** 選択子3

[REFS[
- [16] [CITE[CSS3 module: W3C selectors]] ([TIME[2000-03-13 23:37:32 +09:00]] 版) <http://www.w3.org/TR/1999/WD-CSS3-selectors-19990803#root-pseudo>
]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]] 版) <http://lists.w3.org/Archives/Public/www-style/2007Jun/0116.html>
([[名無しさん]] [WEAK[2007-06-21 15:17:56 +00:00]])

* 関連

[14] [[文書要素]]・[[根要素]]は[[要素]]だけの[[木構造]]を考えると最上位にあり、
[[根]]ですが、[[文書節点]]も含めた[[文書]]全体の構造の中では[[文書節点]]の[[子供]]であるため、
[[根]]ではありません。[[根''要素'']]ではなく[[根''節点'']]と呼ぶと[[文書]]全体の[[根]]を指すため、
[[文書要素]]とは違う意味になります。

* 歴史

[REFS[
- [11] [CITE@en-US[DOM4]] ([TIME[2011-09-26 12:32:56 +09:00]] 版) <http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#document-element>
]REFS]

[7] [CITE@en[Editorial: synchronize with the DOM Standard · whatwg/html@21c6ec7]] ([TIME[2016-03-20 17:37:00 +09:00]] 版) <https://github.com/whatwg/html/commit/21c6ec77594eb89b836d4872222f5916910967fd>

[36] [[HTML Standard]] の [DFN[root element of a [CODE(DOMi)@en[Document]] object]]
の定義は2016年3月に削除されました [SRC[>>7]]。