Level 3でしかもまだ未確定な仕様ですが、すでに実装しているブラウザもありそこそこ評判も良いので作ってみました。
XPathは簡単に言うとXML文書の中から条件に合うノード(の集合)を選び出す構文。
/
(スラッシュ)を主な区切り文字としたファイルパス風の指定をする。
XPath自体についてはあちこちに資料があるのでここではいちいち解説しない。
DOM Level 3 XPathの目的は、XPath構文を用いてDOMのノードを複雑な条件で選択できるようにすることである。 XPath 1.0を前提としている。
なお、XPathで言うノードとDOMで言うノードは厳密には定義が異なるので要注意。
XPathの構文エラーなどで発生する例外。
属性名 | 型 | 解説 |
---|---|---|
code | unsigned short |
エラーの種類。INVALID_EXPRESSION_ERR = 51 ならば、構文エラーや不明なXPath関数がある場合。TYPE_ERR = 52 ならば、式が指定された型を返すように変換できない場合。
|
解析され、名前空間が解決された、(妥当な)XPath式を表す。
メソッド名 | 型 | 解説 | X | 第1引数の型 | 第2引数の型 | 第3引数の型 |
---|---|---|---|---|---|---|
evaluate(contextNode, type, result) | XPathResult |
XPath式を評価し、可能ならば指定された型で結果を返す。
contextNodeでコンテキストノードを指定し、
これはDocument, Element, Attribute, Text, CDATASection, Comment, ProcessingInstruction, XPathNamespaceのいずれかでなければならない。
typeはXPathResultで定義されたresultType の値で、指定された場合結果は該当する型として返される。
resultには返値が代入されるXPathResultオブジェクトを指定できる。null であれば、新たなXPathResultが生成され、返される。
typeまたはresultで指定された型が返せない場合はXPathExceptionが、その他処理に失敗するとDOMExceptionが発生する。
なお、XPath 2.0ではXPathResult以外の型も引数や返値の型になる可能性がある。
|
X | Node | unsigned short | XPathResult |
XPath式中の接頭辞(プレフィクス)を名前空間URIに結びつける。
メソッド名 | 型 | 解説 | RO, X | 引数の型 |
---|---|---|---|---|
lookupNamespaceURI(prefix) | DOMString |
prefixに関連づけられた名前空間URIを検索する。見あたらなければnull 。
|
- | DOMString |
特定のノードのコンテキストでのXPath式を評価した結果。いろいろな型を表すため、型の検知と値の読み取りの操作を提供する。
メソッド・属性名 | 型 | 解説 | 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 |
結果の数値。resultType がNUMBER_TYPE でなければ例外が発生する。
|
RO, XR | - |
stringValue | DOMString |
結果の文字列。resultType がSTRING_TYPE でなければ例外が発生する。
|
RO, XR | - |
booleanValue | boolean |
結果の真偽値。resultType がBOOLEAN_TYPE でなければ例外が発生する。
|
RO, XR | - |
singleNodeValue | Node |
結果のノード集合に含まれる1つのノード(ANY_UNORDERED_NODE_TYPE ならばどれか1つのノード、FIRST_ORDERED_NODE_TYPE ならば最初のノード)。ノード集合の個数が0ならばnull 。resultType がANY_UNORDERED_NODE_TYPE , FIRST_ORDERED_NODE_TYPE でなければ例外が発生する。
|
RO, XR | - |
invalidIteratorState | boolean |
イテレータが無効になったことを示す。resultType がUNORDERED_NODE_ITERATOR_TYPE またはORDERED_NODE_ITERATOR_TYPE で、結果が返された後に文書が変更されている場合がtrue である。
|
RO | - |
snapshotLength | unsigned long |
結果のノード集合に含まれるノードの数。resultType がUNORDERED_NODE_SNAPSHOT_TYPE , ORDERED_NODE_SNAPSHOT_TYPE でなければ例外が発生する。
|
RO, XR | - |
iterateNext() | Node |
結果のノード集合に順次1つずつアクセスする(ただしUNORDERED_NODE_ITERATOR_TYPE ならば順序は不定)、ただし次のノードがなければnull 。resultType がUNORDERED_NODE_ITERATOR_TYPE , ORDERED_NODE_ITERATOR_TYPE でなければ例外が発生する。
|
X | - |
snapshotItem(index) | Node |
結果のノード集合のindex番目にアクセスする(ただしUNORDERED_NODE_SNAPSHOT_TYPE ならば順序は不定)。resultType がUNORDERED_NODE_SNAPSHOT_TYPE , ORDERED_NODE_SNAPSHOT_TYPE でなければ例外が発生する。
indexは0 〜snapshotLength-1 の間の値で、これら以外の値が指定されればnull 。
|
X | unsigned long |
XPathResultのNode型として返されうる、XPath名前空間ノード型を表す。このノードを文書ツリーに配置しようとしたり、NamedNodeMapに加えようとしてはいけない。このノードは読み取り専用であり、ユーザが作成したり、変更することはできない。
継承: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 |