次の方法で共有


ロケーション パスの指定 (SQLXML 4.0)

XPath クエリは式の形式で指定され、 式の種類にはさまざまなものがあります。 ロケーション パスは、コンテキスト ノードに相対的なノードのセットを選択する式です。 ロケーション パスを評価すると、結果はノード セットになります。

ロケーション パスの種類

ロケーション パスは、次のいずれかの形式で指定できます。

  • 絶対ロケーション パス

    絶対ロケーション パスは、ドキュメントのルート ノードから開始します。 構成要素はスラッシュ記号 (/) で、その後に相対ロケーション パスを続けることもできます。 スラッシュ記号 (/) によって、ドキュメントのルート ノードが選択されます。

  • 相対ロケーション パス

    相対ロケーション パスは、ドキュメントのコンテキスト ノードから開始します。 構成要素は連続する 1 つ以上のロケーション ステップで、区切りにはスラッシュ記号 (/) を使用します。 各ステップで、コンテキスト ノードに対して相対的なノードのセットが選択されます。 最初のステップでは、コンテキスト ノードに対して相対的なノードのセットが選択され、 そのセットの各ノードが次のステップのコンテキスト ノードとして使用されます。 そのステップで指定されたノードのセットは結合されます。 たとえば、child::Order/child::OrderDetail と指定すると、コンテキスト ノードの <Order> 子要素の <OrderDetail> 子要素が選択されます。

    注意

    SQLXML 4.0 における XPath の実装では、XPath が明示的に絶対として指定されていない場合でも、各 XPath クエリはルート コンテキストから開始します。 たとえば、"Customer" で開始する XPath クエリは "/Customer" として扱われます。 Customer[Order] という XPath クエリでは、Customer はルート コンテキストで開始しますが、Order は Customer コンテキストで開始します。 詳細については、「XPath クエリの使用について (SQLXML 4.0)」を参照してください。

ロケーション ステップ

ロケーション パス (絶対または相対) は、次の 3 つの部分から成るロケーション ステップで構成されます。

  • 軸によって、ロケーション ステップで選択されるノードと、コンテキスト ノードの間のツリー リレーションシップが指定されます。 サポートされる軸は、parent、child、attribute、および self 軸です。 ロケーション パスに child 軸を指定した場合、クエリで選択されるすべてのノードはコンテキスト ノードの子です。 parent 軸を指定した場合、選択されるノードはコンテキスト ノードの親ノードです。 attribute 軸を指定した場合、選択されるノードはコンテキスト ノードの属性です。

  • ノード テスト

    ノード テストによって、ロケーション ステップで選択されるノードの型が決まります。 すべての軸 (child、parent、attribute、および self) には主ノード型があります。 attribute 軸の場合、主ノード型は <attribute> です。 parent、child、および self 軸の場合、主ノード型は <element> です。

    たとえば、ロケーション パスで child::Customer と指定すると、コンテキスト ノードの <Customer> 子要素が選択されます。 child 軸の主ノード型は <element> なので、Customer が <element> ノードの場合、ノード テスト Customer は TRUE になります。

  • 選択述語 (0 以上)

    述語では、軸に関してノード セットをフィルター選択します。 XPath 式内に選択述語を指定するときには、SELECT ステートメント内に WHERE 句を指定するときのように、 述語をかっこで囲みます。 選択述語に指定したテストを適用すると、そのノード テストによって返されたノードがフィルター選択されます。 次に、フィルター選択されたノード セットの各ノードに対し、ノードをコンテキスト ノード、ノード セット内のノード数をコンテキストのサイズとして、述語式が評価されます。 述語式が TRUE と評価された場合、そのノードは結果のノード セットに含められます。

    ロケーション ステップの構文では、軸名とノード テストを 2 つのコロン (::) で区切り、その後に式をそれぞれ角かっこで囲んで指定します。式は指定しなくてもかまいません。 たとえば、XPath 式 (ロケーション パス) に child::Customer[@CustomerID='ALFKI'] と指定すると、まず、コンテキスト ノードのすべての <Customer> 子要素が選択され、 次に、述語内のテストがノード セットに適用されます。その結果、CustomerID 属性に 'ALFKI' という属性値が指定されている <Customer> 要素ノードだけが返されます。

このセクションの内容