ロケーション パスの指定 (SQLXML 4.0)
適用対象: SQL Server Azure SQL データベース
XPath クエリは式の形式で指定され、 式の種類にはさまざまなものがあります。 ロケーション パスは、コンテキスト ノードに相対的なノードのセットを選択する式です。 ロケーション パスを評価すると、結果はノード セットになります。
ロケーション パスの種類
ロケーション パスは、次のいずれかの形式で指定できます。
絶対場所パス
絶対ロケーション パスは、ドキュメントのルート ノードから開始します。 構成要素はスラッシュ記号 (/) で、その後に相対ロケーション パスを続けることもできます。 スラッシュ記号 (/) によって、ドキュメントのルート ノードが選択されます。
相対位置パス
相対ロケーション パスは、ドキュメントのコンテキスト ノードから開始します。 構成要素は連続する 1 つ以上のロケーション ステップで、区切りにはスラッシュ記号 (/) を使用します。 各ステップで、コンテキスト ノードに対して相対的なノードのセットが選択されます。 最初のステップでは、コンテキスト ノードに対して相対的なノードのセットが選択され、 そのセットの各ノードが次のステップのコンテキスト ノードとして使用されます。 そのステップで指定されたノードのセットは結合されます。 たとえば、child::Order/child::OrderDetail は、コンテキスト ノードの <Order> 要素の子の <OrderDetail> 要素の子を選択します。
Note
SQLXML 4.0 における XPath の実装では、XPath が明示的に絶対として指定されていない場合でも、各 XPath クエリはルート コンテキストから開始します。 たとえば、"Customer" で開始する XPath クエリは "/Customer" として扱われます。 XPath クエリ Customer[Order]では、Customer はルート コンテキストから始まりますが、Order は Customer コンテキストで開始されます。 詳細については、「 XPath クエリの使用に関する概要 (SQLXML 4.0)」を参照してください。
ロケーション ステップ
ロケーション パス (絶対または相対) は、次の 3 つの部分から成るロケーション ステップで構成されます。
軸
軸によって、ロケーション ステップで選択されるノードと、コンテキスト ノードの間のツリー リレーションシップが指定されます。 親、child、attribute、および軸がサポートされています。 場所のパスに 子 軸が指定されている場合、クエリによって選択されたすべてのノードがコンテキスト ノードの子になります。 親軸が指定されている場合、選択したノードはコンテキスト ノードの親ノードになります。 attribute軸が指定されている場合、選択したノードはコンテキスト ノードの属性になります。
ノード テスト
ノード テストによって、ロケーション ステップで選択されるノードの型が決まります。 すべての軸 (child、 parent、 attribute、および self) には、プリンシパル ノード の種類があります。 attribute軸の場合、プリンシパル ノードの種類は <attribute> です。 親、子、および軸の場合、プリンシパル ノードの種類は<要素>。
たとえば、場所のパスで child::Customer が指定されている場合、コンテキスト ノードの <Customer> 要素の子が選択されます。 子軸には<要素があるため>顧客が <element> ノードの場合、ノード テスト Customer は TRUE になります。
選択述語 (0 個以上)
述語では、軸に関してノード セットをフィルター選択します。 XPath 式内に選択述語を指定するときには、SELECT ステートメント内に WHERE 句を指定するときのように、 述語はかっこで囲みます。 選択述語に指定したテストを適用すると、そのノード テストによって返されたノードがフィルター選択されます。 フィルター選択されたノード セットの各ノードに対し、ノードをコンテキスト ノード、ノード セット内のノード数をコンテキストのサイズとして、述語式が評価されます。 述語式が TRUE と評価された場合、そのノードは結果のノード セットに含められます。
ロケーション ステップの構文では、軸名とノード テストを 2 つのコロン (::) で区切り、その後に式をそれぞれ角かっこで囲んで指定します。式は指定しなくてもかまいません。 たとえば、XPath 式 (場所パス) child::Customer[@CustomerID='ALFKI'] コンテキスト ノードのすべての <Customer> 要素の子が選択されます。 次に、述語のテストがノード セットに適用され、CustomerID> 属性の属性値 'ALFKI' を持つ <Customer 要素ノードのみが返されます。
このセクションの内容
軸の指定 (SQLXML 4.0)
軸を指定する例を示します。
ロケーション パスでのノード テストの指定 (SQLXML 4.0)
ノード テストを指定する例を示します。
ロケーション パスでの選択述語の指定 (SQLXML 4.0)
選択述語を指定する例を示します。