次の方法で共有


xml データ型に対する XQuery

Transact-SQL では、xml データ型のクエリに使用する XQuery 言語のサブセットがサポートされています。この実装は、2004 年 7 月に公開された XQuery のワーキング ドラフトに従っています。この言語は W3C (World Wide Web Consortium) によって開発が進められており、マイクロソフトをはじめとする主要なすべてのデータベース ベンダが参加しています。W3C 仕様は W3C 勧告になる前に改訂されることがあるので、この実装は最終的な勧告とは異なる可能性があります。このトピックでは、SQL Server 2005 でサポートされる XQuery サブセットのセマンティクスと構文について概説します。

詳細については、「W3C XQuery 1.0 Language Specification」を参照してください。

XQuery は構造化または半構造化された XML データに対するクエリ実行できる言語です。SQL Server 2005 データベース エンジンでは xml データ型がサポートされているので、ドキュメントをデータベースに格納し、XQuery を使用してクエリを実行することができます。

XQuery は既存の XPath クエリ言語に基づいており、優れた反復処理や結果の並べ替え、必要な XML を構築する機能を実現するためのサポートが追加されています。XQuery は XQuery データ モデルで動作します。これは XML ドキュメントおよび XQuery の結果を抽象化したモデルで、XQuery の結果は型指定することも、型指定しないこともできます。型情報は W3C XML Schema 言語によって提供される型に基づきます。型指定情報を使用できない場合は、XQuery によりデータが型指定されていないものとして処理されます。この処理方法は、XPath Version 1.0 で XML が処理される方法と同様です。

xml 型の変数または列に格納されている XML インスタンスに対してクエリを実行するには、xml データ型メソッドを使用します。たとえば、xml 型の変数を宣言し、xml データ型の query() メソッドを使用することで、その変数に対するクエリを実行できます。

DECLARE @x xml
SET @x = '<ROOT><a>111</a></ROOT>'
SELECT @x.query('/ROOT/a')

次の例では、AdventureWorks データベースの ProductModel テーブルの xml 型の Instructions 列に対してクエリを指定しています。

SELECT Instructions.query('declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";         
    /AWMI:root/AWMI:Location[@LocationID=10]
') as Result 
FROM  Production.ProductModel
WHERE ProductModelID=7

この XQuery には名前空間宣言 declare namespace``AWMI=... と、クエリ式 /AWMI:root/AWMI:Location[@LocationID=10] が含まれています。

xml 型の Instructions 列に対して XQuery を指定していることに注意してください。xml データ型の query() メソッド (XML データ型) を使用して XQuery を指定しています。

次の表は、SQL Server 2005 データベース エンジンでの XQuery の実装を理解する際に役立つ関連トピックを示しています。

トピック 説明

xml データ型

SQL Server 2005 データベース エンジンでの xml データ型のサポート、およびこのデータ型に対して使用できるメソッドについて説明します。xml データ型により、XQuery 式が実行される XQuery 入力データ モデルが作成されます。

サーバー上の XML スキーマ コレクションの管理

データベースに格納されている XML インスタンスを型指定する方法について説明します。つまり、XML スキーマ コレクションと xml 型の列を関連付けることができます。この列に格納されているすべてのインスタンスは、コレクションのスキーマに対して検証と型指定が行われます。また、これらのインスタンスにより、XQuery の型情報が提供されます。

AdventureWorks データベースの xml データ型表現

AdventureWorks データベースの xml 型の列およびその列に格納されているインスタンスについて説明します。ほとんどの XQuery サンプルは、AdventureWorks データベースおよびこのデータベースに含まれている xml 型の列に対して記述されています。XML インスタンスについて理解することは、クエリを理解するのに役立ちます。

ms189075.note(ja-jp,SQL.90).gifメモ :
このセクションの構成は、W3C (World Wide Web Consortium) XQuery ワーキング ドラフト仕様に基づいています。このセクションで提供する図の一部は、その仕様から引用したものです。ここでは、Microsoft XQuery の実装と W3C 仕様を比較し、Microsoft XQuery と W3C がどのように異なるかを説明し、サポートしていない W3C 機能を示します。W3C の仕様は http://www.w3.org/TR/2004/WD-xquery-20040723 から入手できます。

このセクションの内容

トピック 説明

XQuery の基礎

XQuery の概念の基本的な概要について説明し、式の評価 (静的コンテキストと動的コンテキスト)、アトミック化、有効なブール値、XQuery 型システム、シーケンス型の照合、およびエラー処理についても説明します。

XQuery 式

XQuery 原始式、パス式、シーケンス式、算術式、比較式、論理式、XQuery の構築、FLWOR 式、条件式、量化式、およびシーケンス型のさまざまな式について説明します。

モジュールとプロローグ (XQuery)

XQuery プロローグについて説明します。

XML データ型に対する XQuery 関数

サポートされている XQuery 関数の一覧について説明します。

xml データ型に対する XQuery の演算子

サポートされている XQuery 演算子について説明します。

xml データ型に対する XQuery のその他のサンプル

XQuery の追加サンプルを提供します。

参照

関連項目

サーバー上の XML スキーマ コレクションの管理

概念

xml データ型
サンプル XML アプリケーション
XML ドキュメントの一括インポートと一括エクスポートの例

ヘルプおよび情報

SQL Server 2005 の参考資料の入手