パス式 (XQuery)
適用対象:SQL Server
XQuery パス式は、要素、属性、テキスト ノードなどのノードをドキュメント内で検索します。 パス式の結果は常に、結果シーケンス内でノードが重複することなく、ドキュメント順で生成されます。 パスを指定する場合は、省略されていない構文または省略形の構文を使用できます。 以下の説明では、主に省略しない構文を取り上げます。 省略形の構文については、このトピックで後述します。
注意
このトピックのサンプル クエリは、ProductModel テーブルの xml 型の列 CatalogDescription と Instructions に対して指定されているため、これらの列に格納されている 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)」を参照してください。
このセクションの内容
パス式のステップでの軸の指定
パス式の軸ステップの操作について説明します。
パス式ステップでのノード テストの指定
パス式でのノード テストの操作について説明します。
パス式ステップでの述語の指定
パス式で述語を操作する方法について説明します。
パス式での省略形構文の使用
パス式での省略構文の使い方について説明します。