XPath構文
XPathは、XML文書内のノードまたはノードのセットを選択するために、パス式を使用しています。 パス(パス)または工程(ステップ)に沿ってノードで選択されました。
XMLインスタンス文書
私たちは、以下の例では、このXML文書を使用します。
<?xml version="1.0" encoding="ISO-8859-1"?>
<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>
<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文書内のノードを選択するために、パス式を使用しています。 またはノードを通る経路に沿ってステップを選択します。 以下に記載されている最も有用なパス式です:
表現 | 説明 |
---|---|
ノード名 | このノードのすべての子ノードを選択します。 |
/ | ルートノードから選択します。 |
// | 現在、場所に関係なく、ノードを選択し、一致するノードからドキュメントを選択します。 |
。 | 現在のノードを選択します。 |
.. | 現在のノードの親を選択します。 |
@ | [プロパティ]を選択します。 |
以下の表では、パス式と式の結果のいくつかをリストアップしました:
パス表現 | 結果 |
---|---|
書店 | 書店要素のすべての子ノードを選択します。 |
/書店 | ルート要素の書店を選択します。 注:パスはスラッシュ(/)で始まる場合、パスは常に要素への絶対パスを表すものです! |
書店/書籍 | 本屋にすべてのbook要素に属するサブ要素を選択します。 |
//ブック | かかわらず、文書内の位置の、すべての本のサブ要素を選択します。 |
書店//ブック | 関係なく、彼らは本屋にし、下にあるものの位置、書店要素の子孫に属するすべてのbook要素を選択していません。 |
// @ラング | langの名前付きプロパティをすべて選択します。 |
述語(述語)
述語は、特定のノードまたは指定された値を含むノードを検索するために使用されます。
述語は角括弧内に埋め込まれています。
以下の表では、述語といくつかの経路式と式の結果をリストしました:
パス表現 | 結果 |
---|---|
/書店/ブック[1] | 書店最初のbook要素に属するサブ要素を選択します。 |
/書店/ブック[最後の()] | 書店最後のbook要素に属するサブ要素を選択します。 |
/書店/ブック[最後の() - 1] | 逆数書店第二book要素に属するサブ要素を選択します。 |
/書店/ブック[位置()<3] | サブエレメントに属する書店要素の最初の2つのbook要素を選択します。 |
//タイトル[@lang] | LANGという名前のすべての属性を選択すると、title要素を持っています。 |
//タイトル[LANG = 'ENG' @] | すべてのtitle要素を選択し、これらの要素は、値ENG lang属性を持っています。 |
/bookstore/book[price>35.00] | 書店要素、および35.00より大きくなければなりません価格要素の値のすべてのbook要素を選択します。 |
/bookstore/book[price>35.00]/title | 書店要素のbook要素のすべてのtitle要素を選択し、前記price要素の値は35.00より大きくなければなりません。 |
未知のノードを選択
XPathのワイルドカードは、未知のXML要素を選択するために使用することができます。
ワイルドカード | 説明 |
---|---|
* | 任意の要素ノードに一致します。 |
@ * | 任意の属性ノードに一致します。 |
ノード() | 任意のタイプのノードに一致します。 |
以下の表では、我々はいくつかのパス式、ならびにこれらの式の結果をリストしました:
パス表現 | 結果 |
---|---|
/書店/ * | すべての子要素の書店要素を選択します。 |
// * | 文書内のすべての要素を選択します。 |
//タイトル[@ *] | title属性を持つすべての要素を選択します。 |
いくつかのパスを選択します
"|"パス式を使用することにより、オペレータが、あなたはいくつかのパスを選択することができます。
以下の表では、我々はいくつかのパス式、ならびにこれらの式の結果をリストしました:
パス表現 | 結果 |
---|---|
//ブック/タイトル| //ブック/価格 | すべての要素の本のタイトルと価格要素を選択します。 |
//タイトル| //価格 | タイトルと価格要素のすべての文書を選択します。 |
/書店/書籍/タイトル| //価格 | すべてのtitle要素に属する書籍の書店要素要素を選択し、すべての価格要素を文書化します。 |