Partilhar via


Modelos de conteúdo não determinístico

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Modelos de conteúdo não determinísticos serão aceitos no SQL Server se as restrições de ocorrência forem 0, 1 ou ilimitadas.

Antes do SQL Server 2005 (9.x) Service Pack 1 (SP1), o SQL Server rejeitava esquemas XML que tinham modelos de conteúdo não determinísticos.

Exemplo: Modelo de conteúdo não determinístico rejeitado

O exemplo a seguir tenta criar um esquema XML com um modelo de conteúdo não determinístico. O código falha porque não está claro se o elemento <root> deve ter uma sequência de dois elementos <a> ou se o elemento <root> deve ter duas sequências, cada uma com um elemento <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

O esquema pode ser fixado movendo a restrição de ocorrência para um local exclusivo. Por exemplo, a restrição pode ser movida para a partícula da sequência de contenção:

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

Ou a restrição pode ser movida para o elemento contido:

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

Exemplo: Modelo de conteúdo não determinístico aceito

O esquema a seguir seria rejeitado em versões do SQL Server anteriores ao SQL Server 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

Confira também