SQLXML 4.0 での xml データ型のサポート

SQL Server 2005 では、xml データ型によって XML 型のデータがサポートされます。ここでは、SQLXML 4.0 で xml データ型のインスタンスがどのように認識されるかと、それらがどのようにサポートされるかについて情報を提供します。

xml データ型の使用

xml データ型の列を実装する SQL テーブルの処理方法の理解に役立てるため、SQL Server 2005 Books Online では次の例が提供されています。

タスク トピック

xml 列を XML ビューにマップし、格納する方法

"XML 要素を XML データ型の列にマップする"

XSD 要素および属性の、テーブルおよび列への既定のマッピング [SQLXML 4.0]

アップデートグラムで xml 列にデータを挿入する方法

"XML データ型列にデータを挿入する"

XML アップデートグラムを使用した、データの挿入 (SQLXML 4.0)

xml 列への XML データの一括読み込み

"xml データ型の列に一括読み込みを行う"

XML 一括読み込みの例 (SQLXML 4.0)

ガイドラインと制限

  • <xsd:any> は、xml データ型を含む列にはマップできません。この場合、SQLXML では sql:overflow-field 注釈を使用して対処できます。または、xml データ型のフィールドに xsd:anyType の要素としてマップすることもできます。この方法は、上の表の例 "XML 要素を XML データ型の列にマップする" に示されています。
  • xml データ型の列のコンテンツに XPath クエリを実行することはできません。
  • sql:relationshipsql:key-fields など、xml データ型の列がサポートまたは許可されていない注釈でこのデータ型の列を使用すると、SQL Server エラーが発生し、発生したエラーは SQLXML 4.0 を実装する中間層コンポーネントでトラップされません。これは、SQLXML で SQL 型の情報が必要とされないためです。この動作は、BLOB やバイナリ型などその他のデータ型に対する SQLXML の動作と同様です。
  • xml 列のマッピングは、XSD スキーマでのみサポートされています。XDR スキーマでは、xml 列のマッピングはサポートされていません。
  • SQLXML 4.0 は、SQL Server で提供される XML 解析サポートに依存しています。xml 列は、型指定された XML または型指定されない XML のいずれかとしてマップできます。どちらの場合も、SQLXML 4.0 で入力 XML は検証されません。入力 XML が有効でないか、適切な形式でない場合は、SQL Server から SQLXML にそのことがレポートされ、サーバーによって返された関連エラー情報がある場合はユーザーに伝達されます。
  • SQLXML 4.0 は、SQL Server で提供される DTD の制限付きサポートに依存しています。SQL Server では xml データ型のデータの内部 DTD が許可されるので、既定値の設定や、エンティティ参照の拡張コンテンツへの置き換えに使用できます。SQLXML では、サーバーに XML データが "そのまま" (内部 DTD を含めて) 渡されます。ここで、サード パーティのツールを使用して DTD を XML スキーマ (XSD) ドキュメントに変換し、データをインライン XSD スキーマと共にデータベースに読み込むことができます。
  • SQLXML 4.0 では、SQL Server の動作に基づき、XML 宣言の処理命令 (<?xml version='1.0'?> など) は保持されません。代わりに、XML 宣言は SQL Server XML パーサーに対するディレクティブとして扱われ、データが xml データ型に変換された後は、属性 (バージョン、エンコーディング、およびスタンドアロン) は失われます。この XML データは内部的に UCS-2 として保存されます。XML インスタンス内のその他すべての処理命令は保持されます。これらは xml 列で許可され、SQLXML でサポートされます。

参照

その他の技術情報

xml データ型

ヘルプおよび情報

SQL Server 2005 の参考資料の入手