最新のWeb開発のチュートリアル
 

XPathの構文


XPathは、XML文書内のノードまたはノードのセットを選択するためにパス式を使用します。 ノードは、パスまたは手順に従うことによって選択されます。


XML文書の例

私たちは、以下の例では、次のXML文書を使用します。

<?xml version="1.0" encoding="UTF-8"?>

<bookstore>

<book>
  <title lang="en">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="en">Learning XML</title>
  <price>39.95</price>
</book>

</bookstore>

ノードの選択

XPathは、XML文書内のノードを選択するために、パス式を使用しています。 ノードは、パスまたは手順に従うことによって選択されます。 最も有用なパス式は次のとおりです。

表現 説明
nodename 名前「を持つすべてのノードを選択するnodename
/ ルートノードから選択します
// 関係なく、彼らがどこにあるかの選択と一致していない現在のノードからドキュメント内のノードを選択します
. 現在のノードを選択します
.. 現在のノードの親を選択します
@ 属性を選択します

下の表では、いくつかのパス式と式の結果を列挙されています:

パス式 結果
本屋 名前を持つすべてのノードを選択し"bookstore"
/書店 ルート要素の書店を選択

Note:パスがスラッシュで始まる場合( / )それは常に要素への絶対パスを表します!

書店/書籍 書店の子であるすべてのbook要素を選択
//本 関係なく、文書のどこにいるすべてのbook要素を選択していません
書店//ブック 彼らは書店要素の下にある書店の要素に関係なく、の子孫であるすべてのbook要素を選択
// @ LANG LANG命名されているすべての属性を選択します

述語

述語は、特定のノードまたは特定の値を含むノードを見つけるために使用されます。

述語は常に角括弧内に埋め込まれています。

下の表では、述語といくつかのパス式と式の結果を列挙されています:

パス式 結果
/書店/書籍[1] 書店要素の子である最初のbook要素を選択します。

Note: IEで5,6,7,8,9最初のノード[0]であるが、W3Cによれば、[1]です。 IEでこの問題を解決するには、XPathのにSelectionLanguageを設定します。

In JavaScript: xmlsetProperty("SelectionLanguage","XPath") ;
/書店/書籍〔 last() ] 書店要素の子である最後のbook要素を選択
/書店/書籍〔 last() -1] 最後が、書店要素の子である1つの要素を選択します
/書店/書籍[ position() <3] 書店要素の子である最初の2つの要素を選択します
//タイトル[@lang] LANGという名前の属性を持つすべてのtitle要素を選択します
//タイトル[LANG = 'EN' @] 値を持つ「LANG」属性持っているすべてのtitle要素を選択し"en"
/bookstore/book[price>35.00] 35.00よりも大きい値との価格要素を持つ書店要素のすべてのbook要素を選択
/bookstore/book[price>35.00]/title 35.00よりも大きい値との価格要素を持つ書店要素のbook要素のすべてのtitle要素を選択します

不明なノードの選択

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

ワイルドカード 説明
* 任意の要素ノードに一致します
@* 任意の属性ノードに一致します
node() あらゆる種類の任意のノードに一致します

下の表では、いくつかのパス式と式の結果を列挙されています:

パス式 結果
/本屋/ * 書店要素のすべての子要素ノードを選択します
// * 文書内のすべての要素を選択します
//タイトル[@*] あらゆる種類の少なくとも1つの属性を持つすべてのtitle要素を選択します

いくつかのパスを選択します

使用することで| XPath式での演算子はあなたには、いくつかのパスを選択することができます。

下の表では、いくつかのパス式と式の結果を列挙されています:

パス式 結果
//ブック/タイトル| //ブック/価格 すべてのbook要素のすべてのタイトルと価格要素を選択します
//タイトル| //価格 文書内のすべてのタイトルと価格要素を選択します
/本屋/書籍/タイトル| //価格 書店要素のbook要素のすべてのタイトル要素やドキュメント内のすべての価格要素を選択します