フィルタは、ノードを "フィルタで濾す (filter out)" 方法を知っているオブジェクトである。 NodeIterator また TreeWalker に NodeFilter が与えられる場合、このフィルタが次のノードを返す前に適用される。フィルタがノードを受け入れると言えば、トラバーサルロジックはそれを返す; そうでなければ、トラバーサルは次のノードを探し拒絶されるノードが存在しない振りをする。
DOM は何のフィルタも提供しない。 NodeFilter はまさに使用者が自分のフィルタに提供するのに実装可能なインターフェイスである。
NodeFilter は、ノードからノードへトラバースする方法を知る必要はないし、トラバースされているデータ構造について何を知る必要もない。それらは単一のノードの評価方法さえ知っていればよいから、このことはフィルタを書くのをとても容易にする。コードの再使用を推奨し、一つのフィルタは多数の異なるトラバーサルに使用されてもよい。
acceptNode() メソッドにより、次の定数が返される:
| FILTER_ACCEPT | ノードを受け付ける。 NodeIterator また TreeWalker に定義されたナビゲーションメソッドは、このノードを返す。 |
| FILTER_REJECT | ノードを拒否する。 NodeIterator または TreeWalker に定義されたナビゲーションメソッドは、このノードを返さない。 TreeWalker については、このノードの子も同様に拒否される。 NodeIterators はこれを FILTER_SKIP と同義に扱う。 |
| FILTER_SKIP | この単一のノードをスキップする。 NodeIterator または TreeWalker に定義されたナビゲーションメソッドは、このノードを返さない。 NodeIterator と TreeWalker の双方について、このノードの子は依然として考慮される。 |
TreeWalkers と NodeIterators の中で whatToShow パラメータに使用する利用可能な値はこれらである。 それらは Node の可能な型の集合と同様で、その値は、同じノード型の nodeType の値に該当するビット位置を使用して引き出される。 whatToShow のビットが false に設定されていれば、この型のノードのスキップを要求したとみなす; このケースの振る舞いは、 FILTER_SKIP のそれと同様である。
32 個を超えるノード型が提出された場合、 whatToShow 経由で個別に検査できないことに注意。その必要がある場合、適切な NodeFilter を伴う SHOW_ALL を選択で処理可能である。
| SHOW_ALL | 全 Node を表示する。 |
| SHOW_ATTRIBUTE | Attr ノードを表示する。これは root として属性ノードを持つイテレータまたツリーウォーカーを生成するときのみ意味を持つ; この場合、属性ノードがイテレーションまたトラバーサルの最初の位置内に出現することを意味する。属性は他のノードの子にはならないため、ドキュメントツリーのトラバース時には出現しない。 |
| SHOW_CDATA_SECTION | CDATASection ノードを表示する。 |
| SHOW_COMMENT | Comment ノードを表示する。 |
| SHOW_DOCUMENT | Document ノードを表示する。 |
| SHOW_DOCUMENT_FRAGMENT | DocumentFragment ノードを表示する。 |
| SHOW_DOCUMENT_TYPE | DocumentType ノードを表示する。 |
| SHOW_ELEMENT | Element ノードを表示する。 |
| SHOW_ENTITY | Entity ノードを表示する。これは root として Entity ノードを持つイテレータまたツリーウォーカーを生成するときのみ意味を持つ; この場合、 Entity ノードがトラバーサルの最初の位置内に出現することを意味する。エンティティはドキュメントツリーの一部ではないため、ドキュメントツリーのトラバース時には出現しない。 |
| SHOW_ENTITY_REFERENCE | EntityReference ノードを表示する。 |
| SHOW_NOTATION | Notation ノードを表示する。これは root として Notation ノードを持つイテレータまたツリーウォーカーを生成するときのみ意味を持つ; この場合、 Notation ノードがトラバーサルの最初の位置内に出現することを意味する。ノーテーションはドキュメントツリーの一部ではないため、ドキュメントツリーのトラバース時には出現しない。 |
| SHOW_PROCESSING_INSTRUCTION | ProcessingInstruction ノードを表示する。 |
| SHOW_TEXT | Text ノードを表示する。 |
acceptNode( n )指定されたノードが TreeWalker または NodeIterator の論理ビュー内で可視であるかどうかを検査する。この関数は TreeWalker および NodeIterator の実装により呼出されることになる; 通常はユーザのコードから呼出されることはない。 (もっとも、アプリケーションロジックを導くために同じフィルタを使いたいならば、呼出すことは可能である。)
short 型。ノードを受け入れるか、拒否するか、スキップするかを判定する 上述 の定数。
// Introduced in DOM Level 2:
interface NodeFilter {
// Constants returned by acceptNode
const short FILTER_ACCEPT = 1;
const short FILTER_REJECT = 2;
const short FILTER_SKIP = 3;
// Constants for whatToShow
const unsigned long SHOW_ALL = 0xFFFFFFFF;
const unsigned long SHOW_ELEMENT = 0x00000001;
const unsigned long SHOW_ATTRIBUTE = 0x00000002;
const unsigned long SHOW_TEXT = 0x00000004;
const unsigned long SHOW_CDATA_SECTION = 0x00000008;
const unsigned long SHOW_ENTITY_REFERENCE = 0x00000010;
const unsigned long SHOW_ENTITY = 0x00000020;
const unsigned long SHOW_PROCESSING_INSTRUCTION = 0x00000040;
const unsigned long SHOW_COMMENT = 0x00000080;
const unsigned long SHOW_DOCUMENT = 0x00000100;
const unsigned long SHOW_DOCUMENT_TYPE = 0x00000200;
const unsigned long SHOW_DOCUMENT_FRAGMENT = 0x00000400;
const unsigned long SHOW_NOTATION = 0x00000800;
short acceptNode(in Node n);
};