XPath アクセス(軸)

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 子孫ノードを選択します。