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