サーバーで XML スキーマ コレクションを使用する際のガイドラインと制限事項
XSD (XML Schema Definition Language) の検証には、xml データ型を使用する SQL 列に関して制限事項がいくつかあります。次の表は、このような制限事項に関する詳細と、SQL Server で機能するように XSD スキーマを変更するためのガイドラインを示しています。このセクションのトピックでは、具体的な制限事項の詳細とその対処方法について説明します。
項目 |
制限事項 |
---|---|
minOccurs と maxOccurs |
minOccurs 属性と maxOccurs 属性の値は、4 バイトの整数に収める必要があります。これに違反するスキーマはサーバーで拒否されます。 |
<xsd:choice> |
SQL Server では、minOccurs 属性値に 0 を指定してパーティクルを定義していない限り、子のない <xsd:choice> パーティクルを持つスキーマは拒否します。 |
<xsd:include> |
現状では、SQL Server ではこの要素をサポートしません。この要素を含む XML スキーマはサーバーによって拒否されます。 解決方法として、<xsd:include> ディレクティブを含む XML スキーマに前処理を行い、インクルードされるすべてのスキーマの内容をコピーおよびマージして 1 つのスキーマにすることで、サーバーにアップロードできます。詳細については、「XML スキーマのプリプロセッサ ツール」を参照してください。 |
<xsd:key>、<xsd:keyref>、および <xsd:unique> |
現在、SQL Server では、一意性の強制またはキーやキー参照の確立のために、これらの XSD ベースの制約は使用できません。これらの要素を含む XML スキーマは登録できません。 |
<xsd:redefine> |
SQL Server ではこの要素をサポートしません。スキーマを更新するための別の方法については、「<xsd:redefine> 要素」を参照してください。 |
<xsd:simpleType> 値 |
SQL Server では、xs:time および xs:dateTime 以外の秒部分を含む単純型はミリ秒単位の精度までしかサポートされず、xs:time および xs:dateTime は 100 ナノ秒単位の精度までサポートされます。また、認識されるすべての XSD 単純型の列挙にこの制限を適用します。 SQL Server では、<xsd:simpleType> 宣言での "NaN" 値の使用はサポートしません。 詳細については、「<xsd:simpleType> 宣言の値」を参照してください。 |
xsi:schemaLocation と xsi:noNamespaceSchemaLocation |
xml データ型の列や変数に挿入された XML インスタンス データにこれらの属性が含まれている場合、SQL Server ではこれらの属性が無視されます。 |
xs:QName |
SQL Server では、XML スキーマ制約要素を使用している xs:QName から派生した型はサポートしません。 SQL Server では、メンバ要素に xs:QName を指定した共用体型はサポートしません。 詳細については、「xs:QName 型」を参照してください。 |
既存の置換グループへのメンバの追加 |
XML スキーマ コレクション内の既存の置換グループにメンバを追加することはできません。XML スキーマの置換グループは先頭要素のみで使用するように制限されているので、同じ CREATE XML SCHEMA COLLECTION ステートメントまたは ALTER XML SCHEMA COLLECTION ステートメントで置換グループのすべてのメンバを定義する必要があります。 |
正規の形式とパターン制限 |
値の正規表現は、その値の型のパターン制限に従う必要があります。詳細については、「正規の形式とパターン制限」を参照してください。 |
列挙ファセット |
SQL Server では、ファセットに違反するパターン ファセットや列挙を含む型を使用した XML スキーマはサポートしません。 |
ファセット長 |
length ファセット、minLength ファセット、および maxLength ファセットは long 型で格納されます。この型は 32 ビット型です。したがって、これらの値の許容範囲は 2^31 です。 |
ID 属性 |
XML スキーマ コンポーネントは、それぞれ ID 属性を 1 つ含むことができます。SQL Server では、ID 型の <xsd:attribute> 宣言に一意性を適用しますが、これらの値を格納しません。一意性のスコープは、CREATE XML SCHEMA COLLECTION ステートメントまたは ALTER XML SCHEMA COLLECTION ステートメントで適用します。 |
ID 型 |
SQL Server では、xs:ID 型、xs:IDREF 型、または xs:IDREFS 型の要素はサポートしません。スキーマではこの型の要素、またはこの型の制限または拡張によって派生した要素を宣言できません。 |
ローカル名前空間 |
<xsd:any> 要素では、ローカル名前空間を明示的に指定する必要があります。SQL Server では、名前空間属性の値に空文字列 ("") を使用するスキーマを拒否します。代わりに、SQL Server では "##local" を明示的に使用して、修飾されない要素や属性をワイルドカード文字によるインスタンスとして示す必要があります。 |
混合型と単純コンテンツ |
SQL Server では、混合型を単純コンテンツに制限することはできません。詳細については、「混合型と単純コンテンツ」を参照してください。 |
NOTATION 型 |
SQL Server では、NOTATION 型をサポートしません。 |
メモリ不足状態 |
大きな XML スキーマ コレクションの操作では、メモリが不足することがあります。この問題の解決方法については、「大きな XML スキーマ コレクションとメモリ不足状態」を参照してください。 |
繰り返される値 |
SQL Server では、block 属性または final 属性で "restriction restriction" や "extension extension" のように値を繰り返すスキーマが拒否されます。 |
スキーマ コンポーネントの識別子 |
SQL Server では、スキーマ コンポーネントの識別子の最大長を Unicode 文字 1,000 文字に制限します。また、識別子に補助文字のペアを使用することはできません。 |
タイム ゾーン情報 |
SQL Server 2008 では、xs:date、xs:time、および xs:dateTime の値について、XML スキーマ検証でタイム ゾーンの情報が完全にサポートされます。SQL Server 2005 後方互換性モードでは、タイム ゾーン情報は常に協定世界時 (グリニッジ標準時) を基準として正規化されます。dateTime 型の要素の場合は、サーバー側でオフセット値 ("-05:00") を使用して対応する GMT 時を返すことによって、指定された時間を GMT に変換します。 |
共用体型 |
SQL Server では、共用体型からの制限はサポートしません。 |
可変精度の 10 進数 |
SQL Server では、有効桁数が可変の 10 進数はサポートしません。xs:decimal 型は任意の有効桁数の 10 進数を表します。XML プロセッサに準拠するには、最低でも totalDigits=18 以上の 10 進数をサポートする必要があります。SQL Server では、totalDigits=38 をサポートしますが、小数部は最大 10 桁です。インスタンス化されたすべての xs:decimal 値は、サーバーでは SQL 型数値 (38, 10) を使用して内部的に表現されます。 |
このセクションの内容
トピック |
内容 |
---|---|
正規の形式とパターン制限について説明します。 |
|
XML スキーマ コレクションでのワイルドカード文字、lax 検証、および anyType 要素の使用に関する制限について説明します。 |
|
<xsd:redefine> 要素の使用に関する制限とその回避策について説明します。 |
|
xs:QName 型に関する制限について説明します。 |
|
<xsd:simpleType> 宣言に適用される制限について説明します。 |
|
列挙ファセットに関する制限について説明します。 |
|
混合型を単純コンテンツに制限する場合の制限について説明します。 |
|
大きなスキーマ コレクションで発生することがあるメモリ不足の解決方法について説明します。 |
|
非決定的コンテンツ モデルに関する制限について説明します。 |