ロケーション パスでのノード テストの指定 (SQLXML 4.0)
適用対象: SQL Server Azure SQL データベース
ノード テストによって、ロケーション ステップで選択されるノードの型が決まります。 すべての軸 (child、 parent、 attribute、または self) には、主ノード タイプがあります。 attribute軸の場合、プリンシパル ノードの種類は <attribute> です。 親、子、および軸の場合、プリンシパル ノードの種類は<要素>。
Note
ワイルドカード (*) のノード テスト (たとえば child::*
) は、サポートされていません。
ノード テスト: 例 1
場所パス child::Customer
コンテキスト ノードの子要素 <Customer> を選択します。
この例では、child
は軸で、Customer
はノード テストです。 子軸の主ノード タイプは<element>です。 したがって、 <Customer> ノードが <element> ノードの場合、ノード テストは TRUE になります。 コンテキスト ノードに <Customer> 子がない場合は、空のノード セットが返されます。
ノード テスト : 例 2
場所のパス attribute::CustomerID
コンテキスト ノードの CustomerID 属性を選択します。
この例では、 attribute
は軸であり、 CustomerID
はノード テストです。 attribute軸のプリンシパル ノード タイプは <attribute> です。 したがって、 CustomerID が <attribute> ノードの場合、ノード テストは TRUE になります。 コンテキスト ノードに CustomerID がない場合は、空のノード セットが返されます。
Note
XPath のこの実装では、場所ステップがスキーマで宣言されていない <要素> または <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 つのピリオド (..) で省略できます。