ロケーション パスでのノード テストの指定 (SQLXML 4.0)

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

注意注意

ワイルドカード (*) のノード テスト (たとえば child::*) は、サポートされていません。

ノード テスト : 例 1

ロケーション パス child::Customer では、コンテキスト ノードの <Customer> 子要素が選択されます。

この例では、child は軸で、Customer はノード テストです。child 軸の主ノード型は <element> です。このため、<Customer> ノードが <element> ノードの場合、ノード テストは TRUE になります。コンテキスト ノードに <Customer> 子がない場合は、空のノード セットが返されます。

ノード テスト : 例 2

ロケーション パス attribute::CustomerID では、コンテキスト ノードの CustomerID 属性が選択されます。

この例では、attribute は軸で、CustomerID はノード テストです。attribute 軸の主ノード型は <attribute> です。このため、CustomerID<attribute> ノードの場合、ノード テストは TRUE になります。コンテキスト ノードに CustomerID がない場合は、空のノード セットが返されます。

注意注意

このような XPath の実装では、スキーマ内に宣言されていない <element> 型または <attribute> 型をロケーション ステップで参照すると、エラーが生成されます。これは、空のノード セットを返す MSXML の XPath の実装とは異なります。

軸の省略構文

ロケーション パスでは、次の省略構文がサポートされています。

  • attribute:: は @ で省略できます。

    ロケーション パス Customer[@CustomerID="ALFKI"] は、child::Customer[attribute::CustomerID="ALFKI"] と同じです。

  • ロケーション ステップから child:: を省略できます。

    つまり、child は既定の軸です。ロケーション パス Customer/Order は、child::Customer/child::Order と同じです。

  • self::node() は 1 つのピリオド (.) で省略できます。また、parent::node() は 2 つのピリオド (..) で省略できます。