Level 3でしかもまだ未確定な仕様ですが、すでに実装しているブラウザもありそこそこ評判も良いので作ってみました。

DOM Level 23 リファレンス (XPath)

XPathは簡単に言うとXML文書の中から条件に合うノード(の集合)を選び出す構文。 /(スラッシュ)を主な区切り文字としたファイルパス風の指定をする。 XPath自体についてはあちこちに資料があるのでここではいちいち解説しない。

DOM Level 3 XPathの目的は、XPath構文を用いてDOMのノードを複雑な条件で選択できるようにすることである。 XPath 1.0を前提としている。

なお、XPathで言うノードとDOMで言うノードは厳密には定義が異なるので要注意。

XPathException

XPathの構文エラーなどで発生する例外。

属性名 解説
code unsigned short エラーの種類。INVALID_EXPRESSION_ERR = 51ならば、構文エラーや不明なXPath関数がある場合。TYPE_ERR = 52ならば、式が指定された型を返すように変換できない場合。

XPathExpression

解析され、名前空間が解決された、(妥当な)XPath式を表す。

XPathExpressionのサンプル

メソッド名 解説 X 第1引数の型 第2引数の型 第3引数の型
evaluate(contextNode, type, result) XPathResult XPath式を評価し、可能ならば指定された型で結果を返す。 contextNodeでコンテキストノードを指定し、 これはDocument, Element, Attribute, Text, CDATASection, Comment, ProcessingInstruction, XPathNamespaceのいずれかでなければならない。 typeXPathResultで定義されたresultTypeの値で、指定された場合結果は該当する型として返される。 resultには返値が代入されるXPathResultオブジェクトを指定できる。nullであれば、新たなXPathResultが生成され、返される。 typeまたはresultで指定された型が返せない場合はXPathExceptionが、その他処理に失敗するとDOMExceptionが発生する。 なお、XPath 2.0ではXPathResult以外の型も引数や返値の型になる可能性がある。 X Node unsigned short XPathResult

XPathNSResolver

XPath式中の接頭辞(プレフィクス)を名前空間URIに結びつける。

メソッド名 解説 RO, X 引数の型
lookupNamespaceURI(prefix) DOMString prefixに関連づけられた名前空間URIを検索する。見あたらなければnull - DOMString

XPathResult

特定のノードのコンテキストでのXPath式を評価した結果。いろいろな型を表すため、型の検知と値の読み取りの操作を提供する。

XPathResultのサンプル

メソッド・属性名 解説 RO, X 引数の型
resultType unsigned short この結果の型を表すコード。値の意味は以下の通り。 ANY_TYPE = 0: 特定の型を表さない値で、XPath式の評価の引数にのみ用いられる。この値が引数で用いられて、XPath式評価の結果がノードの集合である場合、結果は常にUNORDERED_NODE_ITERATOR_TYPEになる。 NUMBER_TYPE = 1, STRING_TYPE = 2, BOOLEAN_TYPE = 3: それぞれ数、文字列、真偽値を表す。 UNORDERED_NODE_ITERATOR_TYPE = 4, ORDERED_NODE_ITERATOR_TYPE = 5: iterateNext()で順次アクセスできるノード集合。 UNORDERED_NODE_SNAPSHOT_TYPE = 6, ORDERED_NODE_SNAPSHOT_TYPE = 7: snapshotItem(index)で1つずつアクセスできるノード集合。 ANY_UNORDERED_NODE_TYPE = 8, FIRST_ORDERED_NODE_TYPE = 9: singleNodeValueでアクセスできるノード集合。 RO -
numberValue double 結果の数値。resultTypeNUMBER_TYPEでなければ例外が発生する。 RO, XR -
stringValue DOMString 結果の文字列。resultTypeSTRING_TYPEでなければ例外が発生する。 RO, XR -
booleanValue boolean 結果の真偽値。resultTypeBOOLEAN_TYPEでなければ例外が発生する。 RO, XR -
singleNodeValue Node 結果のノード集合に含まれる1つのノード(ANY_UNORDERED_NODE_TYPEならばどれか1つのノード、FIRST_ORDERED_NODE_TYPEならば最初のノード)。ノード集合の個数が0ならばnullresultTypeANY_UNORDERED_NODE_TYPE, FIRST_ORDERED_NODE_TYPEでなければ例外が発生する。 RO, XR -
invalidIteratorState boolean イテレータが無効になったことを示す。resultTypeUNORDERED_NODE_ITERATOR_TYPEまたはORDERED_NODE_ITERATOR_TYPEで、結果が返された後に文書が変更されている場合がtrueである。 RO -
snapshotLength unsigned long 結果のノード集合に含まれるノードの数。resultTypeUNORDERED_NODE_SNAPSHOT_TYPE, ORDERED_NODE_SNAPSHOT_TYPEでなければ例外が発生する。 RO, XR -
iterateNext() Node 結果のノード集合に順次1つずつアクセスする(ただしUNORDERED_NODE_ITERATOR_TYPEならば順序は不定)、ただし次のノードがなければnullresultTypeUNORDERED_NODE_ITERATOR_TYPE, ORDERED_NODE_ITERATOR_TYPEでなければ例外が発生する。 X -
snapshotItem(index) Node 結果のノード集合のindex番目にアクセスする(ただしUNORDERED_NODE_SNAPSHOT_TYPEならば順序は不定)。resultTypeUNORDERED_NODE_SNAPSHOT_TYPE, ORDERED_NODE_SNAPSHOT_TYPEでなければ例外が発生する。 index0snapshotLength-1の間の値で、これら以外の値が指定されればnull X unsigned long

XPathNamespace

XPathResultのNode型として返されうる、XPath名前空間ノード型を表す。このノードを文書ツリーに配置しようとしたり、NamedNodeMapに加えようとしてはいけない。このノードは読み取り専用であり、ユーザが作成したり、変更することはできない。

継承:Node

Nodeで定義された属性・メソッドの値
メソッド・属性名
ownerDocument ownerElement(下記)のownerDocument
nodeName "#namespace"
prefix, localName そのノードに表現される名前空間の接頭辞。
nodeType XPATH_NAMESPACE_NODE = 13
namespaceURI, nodeValue そのノードに表現される名前空間のURI。
adoptNode, cloneNode, importNode 常に失敗し、DOMExceptionが発生する。
その他 すべてnullまたはfalse
属性名 解説 RO, X
ownerElement Element リクエスト時に名前空間がスコープ内にあった要素。 RO