次の方法で共有


パス式 (XQuery)

適用対象: SQL Server

XQuery パス式は、要素、属性、テキスト ノードなどのノードをドキュメント内で検索します。 パス式の結果は常に、結果シーケンス内でノードが重複することなく、ドキュメント順で生成されます。 パスを指定する場合は、省略されていない構文または省略形の構文を使用できます。 以下の説明では、主に省略しない構文を取り上げます。 省略構文については、このトピックの後半で説明します。

Note

このトピックのサンプル クエリは xml 型の列、 CatalogDescription および Instructions に対して指定されているため、 ProductModel テーブルでは、これらの列に格納されている XML ドキュメントの内容と構造について理解しておく必要があります。

パス式には、相対または絶対を指定できます。 これらの両方の説明を次に示します。

  • 相対パス式は、1 つまたは 2 つのスラッシュ (/または //) で区切られた 1 つ以上のステップで構成されます。 たとえば、 child::Features は相対パス式であり、 Child はコンテキスト ノードの子ノードのみを参照します。 これは現在処理中のノードです。 式は、コンテキスト ノードの <Features> 要素ノードの子を取得します。

  • 絶対パス式は、1 つまたは 2 つのスラッシュ (/または //) で始まり、その後に省略可能な相対パスが続きます。 たとえば、式 /child::ProductDescription の先頭のスラッシュ記号は、この式が絶対パス式であることを示しています。 式の先頭にあるスラッシュはコンテキスト ノードのドキュメント ルート ノードを返すので、式はドキュメント ルートのすべての <ProductDescription> 要素ノードの子を返します。

    絶対パスが 1 つのスラッシュ で始まる場合は、相対パスの後に続く場合とそうでない場合があります。 スラッシュ 記号を 1 つだけ指定した場合、式はコンテキスト ノードのルート ノードを返します。 XML データ型の場合、これはドキュメント ノードになります。

パス式は、通常、ステップで構成されます。 たとえば、絶対パス式 ( /child::ProductDescription/child::Summary) には、スラッシュで区切られた 2 つのステップが含まれます。

  • 最初の手順では、ドキュメント ルートの <ProductDescription> 要素ノードの子を取得します。

  • 2 番目の手順では、取得した各 <ProductDescription> 要素ノードの <Summary> 要素ノードの子を取得します。これはコンテキスト ノードになります。

パス式のステップには、軸ステップまたは一般的なステップを指定できます。

軸ステップ

パス式の軸ステップには、次の部分があります。

axis
移動方向を定義します。 コンテキスト ノードから開始し、軸で指定された方向に到達可能なノードに移動するパス式の軸ステップ。

ノード テスト
選択するノードの型またはノード名を指定します。

0 個以上の省略可能な述語
ノードをフィルター処理します。一部を選択し、他のノードを破棄します。

次の例では、パス式で axisstep を使用します。

  • 絶対パス式 ( /child::ProductDescription) には、1 つのステップのみが含まれます。 これは、軸 (child) とノード テスト (ProductDescription) を指定しています。

  • 相対パス式 child::ProductDescription/child::Features には、1 つのスラッシュ記号で区切られた 2 つのステップがあります。 どちらの手順でも、子軸を指定します。 ProductDescription と Features はノード テストです。

  • 相対パス式 ( child::root/child::Location[attribute::LocationID=10]) には、スラッシュで区切られた 2 つのステップが含まれています。 最初の手順では、軸 (child) とノード テスト (root) を指定します。 2 番目のステップは、軸ステップの 3 種類のコンポーネントをすべて指定しています。つまり、軸 (child)、ノード テスト (Location)、および述語 ([attribute::LocationID=10]) です。

軸ステップのコンポーネントの詳細については、「 パス式ステップでの軸の指定パス式ステップでのノード テストの指定、およびパス式ステップの述語の指定 を参照してください

一般的な手順

汎用ステップは、評価結果がノードのシーケンスになる必要のある式です。

SQL Server の XQuery 実装では、パス式の最初の手順として一般的な手順がサポートされています。 一般的な手順を使用するパス式の例を次に示します。

(/a, /b)/c  
id(/a/b)  

id 関数の詳細については、 id 関数 (XQuery)を参照してください。

このセクションの内容

パス式ステップでの軸の指定
パス式の軸ステップの操作について説明します。

パス式ステップでのノード テストの指定
パス式でのノード テストの操作について説明します。

パス式ステップでの述語の指定
パス式で述語を操作する方法について説明します。

パス式での省略構文の使用
パス式での省略構文の使い方について説明します。