ロケーション パスでのノード テストの指定 (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 つのピリオド (..) で省略できます。