例1
基本的な XPath 構文は、ファイル システム内のファイルの検索に似ています。パスがスラッシュ / で始まる場合、そのパスは要素への絶対パスを表します。
/AAA
ルート要素 AAA を選択します
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
/AAA/CCC
AAA のすべての CCC 子要素を選択します
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
/AAA/DDD/BBB
AAA の子要素である DDD のすべての子要素を選択します
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
例 2
パスが二重スラッシュ // で始まる場合、二重スラッシュ以降のルールを満たすドキュメント内のすべての要素が // (階層関係に関係なく) 選択されることを意味します // BBB
すべての BBB 要素を選択します
<AAA>
<BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>
//DDD/BBB
親要素が DDD であるすべての BBB 要素を選択します
<AAA>
<BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>
例 3
アスタリスク* は、アスタリスクの前のパスにあるすべての要素を選択することを意味します
/AAA/CCC/DDD/*
/AAA/CCC/DDD に接続されたパスを持つすべての要素を選択します
<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB>
<BBB>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
/*/*/*/BBB
3 つの祖先要素を持つすべての BBB 要素を選択します
<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB>
<BBB>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
//*
すべての要素を選択します
<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB>
<BBB>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
例 4
平方数値内の式で要素をさらに指定できます。ここで、数値は選択セット内の要素の位置を表し、last() 関数は選択セット
/AAA/BBB[1]
内の最後の要素を表します。
AAA の最初の BBB 子要素を選択します
<AAA>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
</AAA>
/AAA/BBB[last()]
AAA の最後の BBB 子要素を選択します
<AAA>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
</AAA>
例5
//@id
すべての ID 属性を選択します
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB 名 = "bbb"/>
<BBB/>
</AAA>
//BBB[@id]
id 属性を持つ BBB 要素を選択する
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB 名 = "bbb"/>
<BBB/>
</AAA>
//BBB[@name]
name 属性を持つ BBB 要素を選択します
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB 名 = "bbb"/>
<BBB/>
</AAA>
//BBB[@*]
任意の属性を持つ BBB 要素を選択します
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB 名 = "bbb"/>
<BBB/>
</AAA>
//BBB[not(@*)]
属性のない BBB 要素を選択します
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB 名 = "bbb"/>
<BBB/>
</AAA>
例6
属性の値は、選択基準として使用できます。normalize-space 関数は、先頭と末尾のスペースを削除し、連続するスペース文字列を単一のスペース
//BBB[@id='b1']
に置き換えます。
属性 ID を含む BBB 要素を選択し、その値は「b1」です
<AAA>
<BBB id = "b1"/>
<BBB 名 = " bbb "/>
<BBB 名 = "bbb"/>
</AAA>
//BBB[@name='bbb']
属性名を含む BBB 要素を選択し、その値は「bbb」です
<AAA>
<BBB id = "b1"/>
<BBB 名 = " bbb "/>
<BBB 名 = "bbb"/>
</AAA>
//BBB[normalize-space(@name)='bbb']
属性名を含む BBB 要素を選択し、その値 (normalize-space 関数を使用して先頭と末尾のスペースを削除した後) を「bbb」とします。
<AAA>
<BBB id = "b1"/>
<BBB 名 = " bbb "/>
<BBB 名 = "bbb"/>
</AAA>
例 7
count() 関数は、選択された要素の数をカウントできます
//*[count(BBB)=2]
2 つの BBB 子要素を持つ要素を選択します
<AAA>
<CCC>
<BBB/>
<BBB/>
<BBB/>
</CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
<EEE>
<CCC/>
<DDD/>
</EEE>
</AAA>
//*[カウント(*)=2]
2 つの子を持つ要素を選択してください
<AAA>
<CCC>
<BBB/>
<BBB/>
<BBB/>
</CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
<EEE>
<CCC/>
<DDD/>
</EEE>
</AAA>
//*[カウント(*)=3]
3 つの子要素を持つ要素を選択します
<AAA>
<CCC>
<BBB/>
<BBB/>
<BBB/>
</CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
<EEE>
<CCC/>
<DDD/>
</EEE>
</AAA>
例8
name() 関数は要素の名前を返し、start-with() 関数は関数の最初のパラメータ文字列が 2 番目のパラメータ文字で始まる場合に true を返し、contains() 関数は最初の文字列パラメータが次の場合に true を返します。 2 番目の文字列パラメータが含まれる場合は true。
//*[name()='BBB']
BBB という名前の要素をすべて選択します (ここでは //BBB に相当します)。
<AAA>
<BCC>
<BBB/>
<BBB/>
<BBB/>
</BCC>
<DDB>
<BBB/>
<BBB/>
</DDB>
<BEC>
<CCC/>
<DBD/>
</BEC>
</AAA>
//*[で始まる(name(),'B')]
名前が「B」で始まるすべての要素を選択します
<AAA>
<BCC>
<BBB/>
<BBB/>
<BBB/>
</BCC>
<DDB>
<BBB/>
<BBB/>
</DDB>
<BEC>
<CCC/>
<DBD/>
</BEC>
</AAA>
//*[contains(name(),'C')]
名前に「C」が含まれる要素をすべて選択します
<AAA>
<BCC>
<BBB/>
<BBB/>
<BBB/>
</BCC>
<DDB>
<BBB/>
<BBB/>
</DDB>
<BEC>
<CCC/>
<DBD/>
</BEC>
</AAA>
例9
//CCC | を
使用して複数のパスを結合できます
。
すべての CCC および BBB 要素を選択します
<AAA>
<BBB/>
<CCC/>
<DDD>
<CCC/>
</DDD>
<EEE/>
</AAA>
/AAA///BBB
AAA の子であるすべての BBB 要素とすべての EEE 要素を選択します
<AAA>
<BBB/>
<CCC/>
<DDD>
<CCC/>
</DDD>
<EEE/>
</AAA>
/AAA///CCC |
結合できるパスの数に制限はありません
<AAA>
<BBB/>
<CCC/>
<DDD>
<CCC/>
</DDD>
<EEE/>
</AAA>
例 10
子軸には、コンテキスト ノードの子要素が含まれます。デフォルト軸として、これは無視できます
。
/child::AAA と同等
<AAA>
<BBB/>
<CCC/>
</AAA>
/子::AAA
/AAA相当
<AAA>
<BBB/>
<CCC/>
</AAA>
/AAA/BBB
/child::AAA/child::BBB と同等
<AAA>
<BBB/>
<CCC/>
</AAA>
/子::AAA/子::BBB
/AAA/BBBに相当
<AAA>
<BBB/>
<CCC/>
</AAA>
/子::AAA/BBB
両方を組み合わせることができます
<AAA>
<BBB/>
<CCC/>
</AAA>
例 11
子孫軸にはコンテキスト ノードの子孫が含まれます。子孫は子ノードまたは子ノードの子ノードなどを参照するため、子孫軸には属性ノードと名前空間ノードは含まれません
。
ドキュメントのルート要素のすべての子孫を選択します。つまり、すべての要素が選択されます。
<AAA>
<BBB>
<DDD>
<CCC>
<DDD/>
<EEE/>
</CCC>
</DDD>
</BBB>
<CCC>
<DDD>
<EEE>
<DDD>
<FFF/>
</DDD>
</EEE>
</DDD>
</CCC>
</AAA>
/AAA/BBB/子孫::*
/AAA/BBB のすべての子孫要素を選択します
<AAA>
<BBB>
<DDD>
<CCC>
<DDD/>
<EEE/>
</CCC>
</DDD>
</BBB>
<CCC>
<DDD>
<EEE>
<DDD>
<FFF/>
</DDD>
</EEE>
</DDD>
</CCC>
</AAA>
//CCC/子孫::*
祖先の中に CCC を持つ要素をすべて選択します
<AAA>
<BBB>
<DDD>
<CCC>
<DDD/>
<EEE/>
</CCC>
</DDD>
</BBB>
</AAA>