メインコンテンツまでスキップ

XPath 概要

XPathを使用して、XMLドキュメント内のノードまたはノードのセットを選択できます。ノードは、パス(Path)またはステップ(steps)に従って選定されます。

XMLの例

次の例では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>

ノードの選択

XPathを使用してXML 内のノードとノードセットを選択できます。 ノードは次のようなパス(Path)とステップ(steps)に従って選定されます。

次のリストはよく使用するXpathの書き方です。

パス式記述
nodenameノードの全ての子ノードを選択
/ルートノードから選択
//位置に関係なく、選択に一致する現在のノードからドキュメント内のノードを選択します。
.現在のノードを選択
..現在のノードの親ノードを選択
@属性を選択

次のテーブルで、上記のXpath 書き方とその返した結果がリストされます。

パス式結果
bookstorebookstore 要素の全ての子ノードを選択します。
/bookstoreルート要素となるbookstoreを選択します。パスがスラッシュ(/)から始まる場合は、当該パスが絶対パスになります。
bookstore/bookbookstoreの子要素の全てBook 要素を選択します。
//bookドキュメント内のどこにあるにも関わらず、全てのbook 要素を選択します。
bookstore//book位置に関係なく、bookstoreの子孫要素の全てのbook 要素を選択します。
//@lang名前がlangになっている属性をすべて選択します。

述語(Predicates)

述語を使用して、特定のノードまたは指定値を含むノードを検索できます。

述語は角括弧で囲まれています。

次のテーブルでは、述語を含むいくつかのパス式とその結果をリストしています:

パス式結果
/bookstore/book[1]Bookstore 要素の一番目のBook 要素を選択
/bookstore/book[last()]Bookstore 要素の最後のBook 要素を選択
/bookstore/book[last()-1]Bookstore 要素の最後から二番目のBook 要素を選択
/bookstore/book[position()]Bookstore 要素の最初の2つのBook 要素を選択
//title[@lang]属性名がlangになるtitle 要素を選択
//title[@lang='eng']属性名がlangになり、その値がengになるtitle 要素を選択
/bookstore/book[price>35.00] bookstore 要素でpriceの値は35.00より大きなbook 要素を選択
/bookstore/book[price>35.00]//titlebookstore 要素のbook 要素でpriceの値は35.00より大きなtitle 要素を選択

不明なノードの選択

XPathワイルドカードは、未知のXML 要素を選択するために使用できます。

ワイルドカード記述
*任意の要素ノードをマッチング
@*任意の属性ノードをマッチング
node()任意タイプのノードをマッチング

次のテーブルで、一部のパス式とその結果をリストしています:

パス式結果
/bookstore/*bookstore 要素の子要素をすべて選択
//*ドキュメント内の全ての要素を選択
//title[@*]属性がある全てのtitle 要素を選択

複数のパスを選択

パス式で「|」演算子を使用して、複数のパスを選択できます。

次のテーブルで、一部のパス式とその結果をリストしています:

パス式結果
//book/title | //book/pricebook 要素のtitleとprice 要素を全て選択
//title | //priceドキュメント内のすべてのtitleとprice 要素を全て選択
/bookstore/book/title | //pricebookstore 要素のbook 要素の全てのtitle 要素と、ドキュメント内の全てのprice 要素を選択