[4] [[DOM]] のうち、 [CODE(DOMi)@en[[[NodeIterator]]]] と [CODE(DOMi)@en[[[TreeWalker]]]]
のことを[DFN[[RUBYB[探索]@en[Traversal]]]]といいます。

* 仕様書

[REFS[
- [5] [CITE@en-US[DOM Standard]] ([TIME[2014-06-23 14:49:32 +09:00]] 版) <http://dom.spec.whatwg.org/#traversal>
]REFS]

[11] 元々は [[Ranges]] と抱き合わせて一つの仕様書になっていましたが、
現在は旧 [[DOM Core]] などと共に [[DOM Standard]] の一章となっています。

* インターフェイス

[8] 次の[[インターフェイス]]があります [SRC[>>5]]。

[FIG(short list)[
- [CODE(DOMi)@en[[[NodeIterator]]]]
- [CODE(DOMi)@en[[[TreeWalker]]]]
- [CODE(DOMi)@en[[[NodeFilter]]]]
]FIG]

[9] また [CODE(DOMi)@en[[[Document]]]] [[インターフェイス]]に次の[[メソッド]]があります [SRC[>>5]]。

[FIG(short list)[
- [CODE(DOMm)@en[[[createNodeIterator]]]]
- [CODE(DOMm)@en[[[createTreeWalker]]]]
]FIG]

;; [10] これらは、[[部分インターフェイス]]が存在しなかった [[W3C]] [[DOM]]
時代には [DFN[[CODE(DOMi)@en[[[DocumentTraversal]]]]]] [[インターフェイス]]と呼ばれていました。

* 文脈

[12] 使えそうでいまいち使い所がなく、使えそうに思っても何かが足りない感じで、
あまり使われていませんし、紹介もあまり見かけません。

;; [13] それでも使っているところでは使っているのか、
[[DOM]] から削除しようという話もありませんし、使いたければ使って良いのですが...

* 歴史

** DOM2 Traversal

[6] [[DOM2]] 仕様群の1つである [DFN[[[DOM Level 2 Traversal]]]]
は [[DOM Level 2 Ranges]] と共に [[W3C勧告]]となり、
その後数年かけてようやく[[Webブラウザー]]に実装されました。

[REFS[
- [2] [CITE[Document Object Model for MathML]]
( ([TIME[2001-02-20 21:36:11 +09:00]] 版))
<http://www.w3.org/TR/2001/REC-MathML2-20010221/chapter8.html>
]REFS]

** DOM Standard

[7] [[DOM2 Traversal]] は [[W3C DOM]] 仕様群の中では比較的詳細な方でしたが、
それでも十分厳密に動作が記述されているわけではありませんでした。
そのため [[Web DOM Core]] → [[DOM4]] → [[DOM Standard]]
によって完全に書き直された新しい仕様書で改めて詳細な動作が規定されました。

[REFS[
- [3] [CITE[IRC logs: freenode / #whatwg / 20090908]]
([TIME[2009-10-17 23:05:49 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20090908#l-922>
- [1] [CITE[IRC logs: freenode / #whatwg / 20110727]]
( ([TIME[2011-08-07 19:50:38 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20110727>
]REFS]