XPathはパス式を使用して、XMLドキュメント内のノードまたはノードセットを選択します。ノードは、パスまたはステップに従って選択されます。
XMLサンプルドキュメント
次の例では、このXMLドキュメントを使用します。
<?xml version = "1.0" encoding = "ISO-8859-1"?> <bookstore> <book> <title lang = "eng">ハリーポッター</ title> <price> 29.99 </ price> </ book > <book> <title lang = "eng"> Learning XML </ title> <price> 39.95 </ price> </ book> </ bookstore>
ノードを選択
XPathはパス式を使用して、XMLドキュメント内のノードを選択します。ノードは、パスまたはステップに従って選択されます。
最も有用なパス式を以下に示します。
表情 | 説明文 |
---|---|
ノード名 | このノードのすべての子ノードを選択します。 |
/ | ルートノードから選択します。 |
// | 位置に関係なく、選択範囲と一致する現在のノードからドキュメント内のノードを選択します。 |
。 | 現在のノードを選択します。 |
.. | 現在のノードの親ノードを選択します。 |
@ | 属性を選択します。 |
例
次の表に、パス式と式の結果をいくつか示します。
パス式 | その結果 |
---|---|
本屋 | bookstore要素のすべての子ノードを選択します。 |
/ bookstore | ルート要素の書店を選択します。 注:パスがスラッシュ(/)で始まる場合、このパスは常に要素への絶対パスを表します。 |
書店/本 | 本屋の子要素であるすべての本の要素を選択します。 |
//本 | ドキュメント内での位置に関係なく、すべてのブックの子要素を選択します。 |
本屋//本 | 書店の下のどこにあるかに関係なく、書店要素の子孫であるすべての本要素を選択します。 |
// @ lang | langという名前のすべての属性を選択します。 |
述語
述語は、特定のノードまたは指定された値を含むノードを見つけるために使用されます。
述語は角括弧で埋め込まれます。
例
次の表では、述語を含むパス式と式の結果をリストしています。
パス式 | その結果 |
---|---|
/ bookstore / book [1] | bookstoreの子要素である最初のbook要素を選択します。 |
/ bookstore / book [last()] | bookstoreの子要素である最後のbook要素を選択します。 |
/ bookstore / book [last()-1] | 書店の子要素である最後から2番目のbook要素を選択します。 |
/ bookstore / book [position()<3] | bookstore要素の子要素である最初の2つのbook要素を選択します。 |
//タイトル[@lang] | langという名前の属性を持つすべてのタイトル要素を選択します。 |
//タイトル[@ lang = 'eng'] | すべてのタイトル要素を選択します。これらの要素には、engの値を持つlang属性があります。 |
/bookstore/book[price>35.00] | bookstore要素のすべてのbook要素を選択し、price要素の値は35.00より大きい必要があります。 |
/bookstore/book[price>35.00]/title | bookstore要素でbook要素のすべてのtitle要素を選択します。price要素の値は35.00より大きい必要があります。 |
不明なノードを選択
XPathワイルドカードを使用して、不明なXML要素を選択できます。
ワイルドカード | 説明文 |
---|---|
* | 任意の要素ノードに一致します。 |
@ * | 任意の属性ノードに一致します。 |
ノード() | 任意のタイプのノードに一致します。 |
例
次の表に、パス式とこれらの式の結果を示します。
パス式 | その結果 |
---|---|
/ bookstore / * | bookstore要素のすべての子要素を選択します。 |
// * | ドキュメント内のすべての要素を選択します。 |
//題名[@*] | 属性を持つすべてのタイトル要素を選択します。 |
複数のパスを選択
パス式で「|」演算子を使用すると、複数のパスを選択できます。
例
次の表に、パス式とこれらの式の結果を示します。
パス式 | その結果 |
---|---|
//本/タイトル| //本/価格 | book要素のすべてのタイトルと価格要素を選択します。 |
// title | //価格 | ドキュメント内のすべてのタイトルと価格要素を選択します。 |
/ bookstore / book / title | //価格 | bookstore要素のbook要素に属するすべてのtitle要素と、ドキュメント内のすべてのprice要素を選択します。 |