次の方法で共有


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

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

ms172639.note(ja-jp,SQL.90).gifメモ :
ワイルドカード (*) のノード テスト (たとえば 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 がない場合は、空のノード セットが返されます。

ms172639.note(ja-jp,SQL.90).gifメモ :
このような 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 つのピリオド (..) で省略できます。