次の方法で共有


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

適用対象: SQL Server Azure SQL データベース

ノード テストによって、ロケーション ステップで選択されるノードの型が決まります。 すべての軸 (childparentattribute、または 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 つのピリオド (..) で省略できます。