Sdílet prostřednictvím


Modely ne deterministického obsahu

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Ne deterministické modely obsahu jsou na SQL Serveru přijímány, pokud jsou omezení výskytu 0, 1 nebo nevázaná.

Před aktualizací Service Pack 1 (SP1) SYSTÉMU SQL Server 2005 (9.x) odmítl sql Server schémata XML, která obsahovala ne deterministické modely obsahu.

Příklad: Model ne deterministického obsahu byl odmítnut.

Následující příklad se pokusí vytvořit schéma XML s ne deterministickým modelem obsahu. Kód selže, protože není jasné, zda <root> má prvek mít posloupnost dvou <a> prvků, nebo pokud <root> by prvek měl mít dvě sekvence, z nichž každý má prvek <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

Schéma lze opravit přesunutím omezení výskytu do jedinečného umístění. Omezení lze například přesunout do obsahující sekvenční částice:

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

Nebo omezení lze přesunout do obsaženého prvku:

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

Příklad: Model ne deterministického obsahu byl přijat.

Následující schéma by bylo odmítnuto ve verzích SQL Serveru před SQL Serverem 2005 (9.x) SP1.

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

Viz také