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 データ型の列にマップする" |
|
アップデートグラムで xml 列にデータを挿入する方法 |
"XML データ型列にデータを挿入する" |
|
xml 列への XML データの一括読み込み |
"xml データ型の列に一括読み込みを行う" |
ガイドラインと制限
- <xsd:any> は、xml データ型を含む列にはマップできません。この場合、SQLXML では sql:overflow-field 注釈を使用して対処できます。または、xml データ型のフィールドに xsd:anyType の要素としてマップすることもできます。この方法は、上の表の例 "XML 要素を XML データ型の列にマップする" に示されています。
- xml データ型の列のコンテンツに XPath クエリを実行することはできません。
- sql:relationship や sql: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 でサポートされます。