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