次の方法で共有


ロケーション ステップ

ロケーション ステップは、コンテキスト ノードに相対的にノードの集合 (ノード セット) を選択します。

ロケーション ステップは、オプションの軸、ノード テスト、オプションの述語の 3 つのステップで構成されます。 ロケーション ステップの構文は、軸名に続けて 2 つのコロン、次にノード テスト、そして最後に 0 個以上の角かっこで囲まれた述語です。 この構文の最も基本的な形式は次のとおりです。

axis::nodetest[predicate]

  • ロケーション ステップによって選択されるノードとコンテキスト ノードとの間のツリー関係を指定します。 言い換えると、軸はロケーション ステップがコンテキスト ノードから進む一般的な方向を示します。 ロケーション ステップにおいて軸は省略できます。 省略した場合、軸は既定で child:: 軸になります。 さらに、いくつかの軸にはショートカット形式があります。たとえば、アンパサンド (@) 文字は属性軸のショートカットです。
  • ノード テスト
    ロケーション ステップによって初期選択されるノードのノード型または展開名を指定します。 基本的に、ノード テストは、示された軸上のノードの中から候補と考えられる (つまり、ロケーション ステップで一致する可能性のある) ノードを示します。
  • 述語
    XPath 式 (合致条件) を使用して、ロケーション ステップによって選択されたノードの集合をさらに詳細に指定します。 述語は、候補ノードの一覧をさらに詳細に指定する選択基準を指定するフィルターです。 述語は省略できます。 述語がない場合、ロケーション ステップに角かっこ ([ and ]) はありません。

ノードの選択

ロケーション ステップによって選択されるノードセットは、軸とノード テストの関係に基づいて初期ノードセットを生成した後、その初期ノードセットを各述語で順番にフィルターした結果です。

初期ノードセットは、次の 2 つの基準に合致するノードで構成されます。

  • ノードは、コンテキスト ノードに対して軸で指定された関係がある。

  • ノードは、ノード テストによって指定されたノード型と展開名を持っている。

次に、XPath はロケーション ステップの最初の述語を使用して初期ノードセットをフィルターし、新しいノードセットを生成します。 次に XPath は 2 番目の述語を使用して、最初の述語からの結果のノードセットをフィルターします。 このフィルター処理は、XPath がすべての述語を評価するまで繰り返されます。 すべての述語の適用後、その結果のノードセットがロケーション ステップによって選択されたノードセットです。

ms256472.note(ja-jp,VS.100).gif注 :
各述語の式の評価は軸に影響されるため、述語のセマンティクスは指定された軸ごとに定義されます。

次のテーブルには、完全な構文を使用したロケーション ステップの例がいくつか示されています。

ロケーション ステップ 説明

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" という名前のノードすべてを検索します。

参照

リファレンス


ノードのテスト
述語