XPath
XMLの例
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title lang="eng">Harry Potter&</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
ノードの選択
表現 | 説明 |
nodename | このノードのすべての子を選択 |
/ | ルートノードから選択 |
// | ドキュメント内で現在のノードから選択に一致するノードを、位置に関係なく選択 |
. | 現在のノードを選択 |
.. | 現在のノードの親ノードを選択 |
@ | 属性を選択 |
パス表現 | 結果 |
bookstore | bookstore要素のすべての子を選択 |
/bookstore | ルート要素bookstoreを選択。パスがスラッシュ(/)で始まる場合、このパスは常に要素への絶対パスを表す |
bookstore/book | bookstoreの子であるすべてのbook要素を選択 |
//book | ドキュメント内の位置に関係なく、すべてのbook要素を選択 |
bookstore//book | bookstore要素の下にある場所に関係なく、すべてのbook要素を選択 |
//@lang | langという名前のすべての属性を選択 |
条件式
パス表現 | 結果 |
/bookstore/book[1] | bookstoreの子要素の最初のbook要素を選択 |
/bookstore/book[last()] | bookstoreの子要素の最後のbook要素を選択 |
/bookstore/book[last()-1] | bookstoreの子要素の最後から2番目のbook要素を選択 |
/bookstore/book[position()] | bookstoreの子要素の最初の2つのbook要素を選択 |
//title[@lang] | langという属性を持つすべてのtitle要素を選択 |
//title[@lang='eng'] | lang属性がengの値を持つすべてのtitle要素を選択 |
/bookstore/book[price>35.00] | price要素の値が35.00より大きいbookstoreのすべてのbook要素を選択 |
/bookstore/book[price>35.00]//title | price要素が35.00より大きいbookstoreのbook要素のすべてのtitle要素を選択 |
未知のノードの選択
ワイルドカード | 説明 |
* | 任意の要素ノードに一致 |
@* | 任意の属性ノードに一致 |
node() | 任意のタイプのノードに一致 |
パス表現 | 結果 |
/bookstore/* | bookstore要素のすべての子要素を選択 |
//* | ドキュメント内のすべての要素を選択 |
//title[@*] | 属性を持つすべてのtitle要素を選択 |