次の方法で共有


非決定論的コンテンツ モデル

SQL Server 2005 Service Pack 1 (SP1) より前のバージョンでは、SQL Server は非決定論的コンテンツ モデルを持つ XML スキーマを拒否していました。

ただし、SQL Server 2005 SP1 以降では、出現の制約が 0、1、または無制限の場合、非決定論的コンテンツ モデルが受け入れられます。

例: 非決定論的コンテンツ モデルが拒否されました

次の例では、非決定論的コンテンツ モデルを使用して XML スキーマを作成しようとします。 コードが失敗するのは、 <root> 要素が 2 つの <a> 要素のシーケンスを持つ必要があるか、 <root> 要素に 2 つのシーケンスが必要なのか、それぞれが <a> 要素を持つ必要があるかが明確ではないためです。

CREATE XML SCHEMA COLLECTION MyCollection AS '  
<schema xmlns="http://www.w3.org/2001/XMLSchema">  
    <element name="root">  
        <complexType>  
            <sequence minOccurs="1" maxOccurs="2">  
                <element name="a" type="string" minOccurs="1" maxOccurs="2"/>  
            </sequence>  
        </complexType>  
    </element>  
</schema>  
'  
GO  

スキーマは、発生制約を一意の場所に移動することで修正できます。 たとえば、制約を含むシーケンス パーティクルに移動できます。

<sequence minOccurs="1" maxOccurs="4">  
    <element name="a" type="string" minOccurs="1" maxOccurs="1"/>  
</sequence>  

または、制約を包含要素に移動できます。

<sequence minOccurs="1" maxOccurs="1">  
     <element name="a" type="string" minOccurs="1" maxOccurs="4"/>  
</sequence>  

例: 非決定論的コンテンツ モデルが受け入れられる

次のスキーマは、SQL Server 2005 SP1 より前のバージョンの SQL Server では拒否されます。

CREATE XML SCHEMA COLLECTION MyCollection AS '  
<schema xmlns="http://www.w3.org/2001/XMLSchema">  
    <element name="root">  
        <complexType>  
            <sequence minOccurs="0" maxOccurs="unbounded">  
                <element name="a" type="string" minOccurs="0" maxOccurs="1"/>  
                <element name="b" type="string" minOccurs="1" maxOccurs="unbounded"/>  
            </sequence>  
        </complexType>  
    </element>  
</schema>  
'  
GO  

こちらもご覧ください

サーバー上の XML スキーマ コレクションの要件と制限事項