XPathAxes(軸)

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>

XPath 軸

軸は現在のノードに対してノードセットを定義できます。

軸名 結果
ancestor 現在のノードのすべての先祖(親、祖父母など)を選択します。
ancestor-or-self 現在のノードのすべての先祖(親、祖父母など)および現在のノード自体を選択します。
attribute 現在のノードのすべての属性を選択します。
child 現在のノードのすべての子要素を選択します。
descendant 現在のノードのすべての後裔要素(子、孫など)を選択します。
descendant-or-self 現在のノードのすべての後裔要素(子、孫など)および現在のノード自体を選択します。
following 現在のノードの終了タグの後のすべてのノードを選択します。
namespace 現在のノードのすべてのネームスペースノードを選択します。
parent 現在のノードの親ノードを選択します。
preceding 現在のノードの開始タグの前のすべてのノードを選択します。
preceding-sibling 現在のノードの前のすべての同級ノードを選択します。
self 現在のノードを選択します。

位置パス表达式

位置パスは絶対的または相対的でできます。

絶対パスは正斜杠(/)で始まり、相対パスではこのように始まりません。どちらの場合も、位置パスは一つまたは複数のステップを含み、各ステップは斜杠で区切られます:

絶対位置パス:

/step/step/...

相対位置パス:

step/step/...

各ステップは現在のノードセット内のノードに基づいて計算されます。

ステップ(step)には、以下が含まれます:

軸(axis)
選択されたノードと現在のノードの間の木構造関係を定義します。
ノードテスト(node-test)
特定の軸内のノードを識別します。
零個または複数の述語(predicate)
選択されたノードセットをさらに精緻に抽出します。

ステップの文法:

軸名::ノードテスト[述語]

結果
child::book 現在のノードに属するすべての子要素の book ノードを選択します。
attribute::lang 現在のノードの lang 属性を選択します。
child::* 現在のノードのすべての子要素を選択します。
attribute::* 現在のノードのすべての属性を選択します。
child::text() 現在のノードのすべてのテキスト子ノードを選択します。
child::node() 現在のノードのすべての子ノードを選択します。
descendant::book 現在のノードのすべてのbook孫を選択します。
ancestor::book 現在のノードのすべてのbook祖先を選択します。
ancestor-or-self::book 現在のノードのすべてのbook祖先および現在のノード(このノードがbookノードの場合を含む)を選択します。
child::*/child::price 現在のノードのすべてのprice子孫ノードを選択します。