パス式 (XQuery)

適用対象:SQL Server

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

注意

このトピックのサンプル クエリは、ProductModel テーブルの xml 型の列 CatalogDescriptionInstructions に対して指定されているため、これらの列に格納されている 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::ProductDescription1 つのステップのみが含まれます。 これは、軸 (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)」を参照してください。

このセクションの内容

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

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

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

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