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