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