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