位置のパス (XPath)
ロケーション パスは、コンテキスト ノードと相対的なノード セットを選択するために使用する XPath 式です。 ロケーション パス式を評価した結果として、ロケーション パスで指定したノードを含むノード セットが返されます。 ロケーション パスには、ノード セットをフィルターするために使用する式を再帰的に含めることができます。
構文上、ロケーション パスは 1 つ以上のロケーション ステップから構成され、各ロケーション ステップはフォワード スラッシュ (/) で区切られます。
locationstep/locationstep/locationstep
各ロケーション ステップにより、コンテキスト ノードに対して (つまり、直前のロケーション ステップで選択されたノードに対して) 相対的にノード セットが選択されます。 こうしたロケーション パスは相対ロケーション パスとなります。 絶対ロケーション パスはルート要素から開始します。
/locationstep/locationstep/locationstep
ロケーション パスの中で、ロケーション ステップは左から右に評価されます。 左端のロケーション ステップにより、コンテキスト ノードに相対的にノード セットが選択されます。 これらのノードは、次のロケーション ステップの処理でコンテキスト ノードとなります。 すべてのロケーション ステップが処理されるまで、このステップの処理とコンテキスト ノードの更新が繰り返されます。
ロケーション パスでは完全表記と省略表記を使用することができます。
完全表記のロケーション パスでのロケーション ステップは次の構文となります。
axis::node-test[predicate]
この構文で、axis はロケーション ステップで選択されるノードとコンテキスト ノードの関係を示します。node-test は、ロケーション ステップで選択されるノードの型と展開名を示します。そして predicate は、ロケーション ステップ中でノードの選択をさらに詳細に行うためのフィルター式です。 この述語は省略できます。 省略した場合、ロケーション ステップは axis:: および node-test だけで構成されます。 次の表に例を示します。
完全表記のロケーション パス |
説明 |
---|---|
child::para[last()] |
コンテキスト ノードに対して最後の <para> 要素を選択します。 |
parent::para |
コンテキスト ノードの親である <para> 要素を選択します。 |
child::text() |
コンテキスト ノードの、すべてのテキスト ノードの子を選択します。 |
child::div/child::para |
コンテキスト ノードの子である <div> 要素の <para> 子要素を選択します。 |
省略表記のロケーション パスでは、ロケーション ステップ内に軸の指定 axis:: を明示的に使用せず、代わりに一組の略記法を使用します。 次の表に例を示します。
省略表記のロケーション パス |
説明 |
---|---|
para |
コンテキスト ノードの <para> 要素を選択します。 |
../para |
コンテキスト ノードの親である <para> 要素を選択します。 |
text() |
コンテキスト ノードの、すべてのテキスト ノードの子を選択します。 |
./div/para |
コンテキスト ノードの子である <div> 要素の子である <para> 要素を選択します。 |
以下はいくつかの略記法のまとめです。
完全表記 |
省略形 |
---|---|
child::* |
* |
attribute::* |
@* |
/descendant-or-self::node() |
// |
self::node() |
. |
parent::node() |
.. |
このセクションの内容
以下のトピックではロケーション パスの各部の構文と使用法を詳細に説明しています。