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