XPath 式のコンテキスト
XPath 式の評価は、式の対象となるコンテキストに依存します。 コンテキストは式の評価対象のノードから成り、その関連する環境には以下があります。
ドキュメントの順序で、兄弟に対するコンテキスト ノードの位置。
コンテキストのサイズ (コンテキスト ノードの兄弟の数に 1 を加算)。
変数への参照を解決する変数バインディング。
関数ライブラリ。
式のスコープ内の名前空間宣言。
コンテキストの概念を十分に理解するため、ノードを含むツリーを考えます。 ツリーのルートから X という名前のノードすべてを問い合わせると、1 組の結果が返されますが、それらのノードをツリーの枝から問い合わせると、異なる結果が返されます。 したがって、式の結果は、その実行コンテキストに依存します。
XPath 式は、特定のコンテキストの特定のパターンに一致し、返されたノードのコンテキストに相対的に演算を実行することができます。 これによって XPath 式によるドキュメント ツリー全体の検索が非常に柔軟になります。
基本 XPath 式
XPath 式の基本的な種類は次のとおりです。 以下にそれぞれの種類について説明します。
現在のコンテキスト
ドキュメントのルート
ルート要素
再帰降下
特定要素
例
以下の例は、基本 XPath 式のいくつかを説明するものです。 これら単純な式を組み合わせ、さまざまな XPath 演算子や特殊文字を使用して、より複雑な式を作成できます。
現在のコンテキスト
ピリオドとフォワード スラッシュ (./) を前置した式は、コンテキストとして現在のコンテキストを明示的に使用します。 たとえば、次の式は、コンテキスト内のすべての<author>
要素を参照します。./author
これは次と同等であることに注意してください。
author
ドキュメントのルート
フォワード スラッシュ (/) を前置した式は、コンテキストとしてドキュメントのルートを使用します。 たとえば、次の式は、このドキュメントのルートにある<bookstore>
要素を参照します。/bookstore
ルート要素
フォワード スラッシュに続いてアスタリスク (./*) を使用した式は、コンテキストとしてルート要素を使用します。 たとえば、次の式はドキュメントのルート要素を検索します。/*
再帰ディセント
フォワード スラッシュを 2 つ (.//) 使用した式は、階層の 0 以上のレベルを含む検索を示します。 パターンの最初にこの演算子が現れる場合、コンテキストはドキュメントのルートを基準にします。 たとえば、次の式は、現在のドキュメント内の任意の位置にあるすべての<author>
要素を参照します。//author
.// プレフィックスは、コンテキストが現在のコンテキストによって示される階層のレベルで始まることを示します。
特定要素
要素名で始まる式は、現在のコンテキスト ノードから開始する特定の要素を照会します。 たとえば、次の式は、現在のコンテキスト ノード内の<images>
要素内の<background.jpg>
要素を参照します。images/background.jpg
次の式は、現在のコンテキスト ノード内の
<bookstore>
要素内の<book>
要素のコレクションを参照します。bookstore/book
たとえば、次の式は、現在のコンテキスト ノード内のすべての
<first.name>
要素を参照します。first.name
注 : 要素名にはピリオド文字 (.) を含めることができます。これらの名前は他の名前と同様に使用できます。
DOM のコンテキスト
Microsoft XML DOM で XPath 式を使用する場合、コンテキストは selectNodes メソッドまたは selectSingleNode メソッドが呼び出された Node オブジェクトです。
DOM から直接 XPath を使用する場合は、特定のノードからコンテキストを定義します。
XSLT のコンテキスト
XSLT から直接 XPath を使用する場合は、現在のノードでコンテキストを定義します。
その他のリソース
詳細については、www.w3.org/TR/xpath で公開されている、『XML Path Language (XPath) Version 1.0 (W3C Recommendation 16 November 1999)』を参照してください。