getRootNode

getRootNode

[1] データ構造である木の中で、植物の木の根にあたる部分の節点を、 根節点 (ねせってん) (root node) 、 あるいは単に根 (ね) (root) といいます。

[4] 木のほとんどの節点は親節点を持ちますが、 唯一根だけは親節点がありません。

[5] 「根節点」という時、データモデルによっては特定の節点の種類を表しますが、 別のデータモデルでは木構造中の位置を表します。具体的には、 XPath 1.0データ・モデルでは「根節点」とは DOM の文書節点に相当する節点の種類ですが、 XDM では「根節点」とは種類に関わらず木構造の根に位置する節点のことです。

仕様書

定義

[11] オブジェクトの根 (root) は、 その親が null ならそれ自体、 それ以外ならその親の根です >>10。

[12] つまり、親をたどってそれ以上たどれなくなったら、それが根です。

[6] 木の根 (root) は、 それに属するオブジェクトのうち、 その親が null であるものです >>10。

[13] そのようなオブジェクトは、木ごとにちょうど1つだけ存在します。
[14] 木の根は、木に属する任意のオブジェクトの根と常に一致します。

根の取得

[18] ある節点の根は、その節点の親をたどっていくことで取得できます。 その計算量は深さ (根から当該節点までの枝の数) ですから、 おおよそ平均的には O(log(n)) (最悪 O(n)) となります。

[19] 木を保持するデータ構造や、速い探索のための最適化の方法次第で、 より高速に取得できることがあります。

[20] 例えば多くの DOM の実装は、少なくても主たる文書木については、 O(1) で節点の根にアクセスできるように参照を保持しているようです。

根要素

[7] 「根要素」は要素のみを考えた時根にあたるものです。必ずしも根節点と同一ではありません。

根要素参照。

影を含む根

[15] 影木も含めた全体の根を影を含む根といいます。

歴史

[8] XQuery and XPath Data Model 3.0 ( ( 版)) <http://www.w3.org/TR/xpath-datamodel-3/#dt-root-node>

[2] Add Node.prototype.rootNode · whatwg/dom@0316b62 ( 版) <https://github.com/whatwg/dom/commit/0316b621cfe8a7aa4ad50a2ec7d10dba902ddccb>

[3] [Issue #80] Remove Node.treeRoot because it was renamed and was upstr… · w3c/webcomponents@959d802 ( 版) <https://github.com/w3c/webcomponents/commit/959d8026056976b24e5eccc55eb3190e7719cf8d>

[9] Editorial: add sections on document and shadow trees · whatwg/dom@018440e ( 版) <https://github.com/whatwg/dom/commit/018440e918b59633eb0a6b9033528f612f84aa49>

[16] Remove Node.prototype.rootNode ( (annevk著, )) <https://github.com/whatwg/dom/commit/42a45eb0d1af13e510620b6b29696997f0c7aa3d>

[17] Add Node.prototype.getRootNode() ( (annevk著, )) <https://github.com/whatwg/dom/commit/579ef079ded65daa981cac974648621790839072>

[21] XQuery and XPath Data Model 3.1 () <https://www.w3.org/TR/2017/REC-xpath-datamodel-31-20170321/#dt-root-node>

[22] Editorial: getRootNode() is a method (annevk著, ) <https://github.com/whatwg/dom/commit/b8d9f4e4a319d3050df0e9242a8d3d2733ba67fa>

[23] "The getRootNode(options) attribute’s getter" · Issue #481 · whatwg/dom () <https://github.com/whatwg/dom/issues/481>