ロケーション ステップ
ロケーション ステップは、コンテキスト ノードに相対的にノードの集合 (ノード セット) を選択します。
ロケーション ステップは、オプションの軸、ノード テスト、オプションの述語の 3 つのステップで構成されます。 ロケーション ステップの構文は、軸名に続けて 2 つのコロン、次にノード テスト、そして最後に 0 個以上の角かっこで囲まれた述語です。 この構文の最も基本的な形式は次のとおりです。
axis::nodetest[predicate]
- 軸
ロケーション ステップによって選択されるノードとコンテキスト ノードとの間のツリー関係を指定します。 言い換えると、軸はロケーション ステップがコンテキスト ノードから進む一般的な方向を示します。 ロケーション ステップにおいて軸は省略できます。 省略した場合、軸は既定でchild::
軸になります。 さらに、いくつかの軸にはショートカット形式があります。たとえば、アンパサンド (@
) 文字は属性軸のショートカットです。
- ノード テスト
ロケーション ステップによって初期選択されるノードのノード型または展開名を指定します。 基本的に、ノード テストは、示された軸上のノードの中から候補と考えられる (つまり、ロケーション ステップで一致する可能性のある) ノードを示します。
- 述語
XPath 式 (合致条件) を使用して、ロケーション ステップによって選択されたノードの集合をさらに詳細に指定します。 述語は、候補ノードの一覧をさらに詳細に指定する選択基準を指定するフィルターです。 述語は省略できます。 述語がない場合、ロケーション ステップに角かっこ ([
and]
) はありません。
ノードの選択
ロケーション ステップによって選択されるノードセットは、軸とノード テストの関係に基づいて初期ノードセットを生成した後、その初期ノードセットを各述語で順番にフィルターした結果です。
初期ノードセットは、次の 2 つの基準に合致するノードで構成されます。
ノードは、コンテキスト ノードに対して軸で指定された関係がある。
ノードは、ノード テストによって指定されたノード型と展開名を持っている。
次に、XPath はロケーション ステップの最初の述語を使用して初期ノードセットをフィルターし、新しいノードセットを生成します。 次に XPath は 2 番目の述語を使用して、最初の述語からの結果のノードセットをフィルターします。 このフィルター処理は、XPath がすべての述語を評価するまで繰り返されます。 すべての述語の適用後、その結果のノードセットがロケーション ステップによって選択されたノードセットです。
注 : |
---|
各述語の式の評価は軸に影響されるため、述語のセマンティクスは指定された軸ごとに定義されます。 |
次のテーブルには、完全な構文を使用したロケーション ステップの例がいくつか示されています。
ロケーション ステップ | 説明 |
---|---|
|
コンテキスト ノードの最初の子ノードの検索 |
|
コンテキスト ノードのすべての |
|
親ノードの名前が "book" であるドキュメント内のノードすべて、またコンテキスト ノードの子孫の "author" という名前のノードすべてを検索します。 |