Compartir a través de


modelos de contenido no determinista

Antes de SQL Server 2005 Service Pack 1 (SP1), SQL Server rechazaron esquemas XML que tenían modelos de contenido no deterministas.

A partir de SQL Server 2005 SP1, sin embargo, los modelos de contenido no deterministas se aceptan si las restricciones de repetición son 0,1 o no están enlazados.

Ejemplo: modelo de contenido no determinista rechazado

En el siguiente ejemplo se intenta crear un esquema XML con un modelo de contenido no determinista. El código genera un error porque no está claro si el elemento <root> debería tener una secuencia de dos elementos <a> o si el elemento <root> debería tener dos secuencias, cada una de ellas con un 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  

El esquema se puede corregir moviendo la restricción de repetición a una ubicación única. Por ejemplo, la restricción se puede mover a la partícula de secuencia contenedora:

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

O bien, la restricción se puede mover al elemento contenido:

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

Ejemplo: modelo de contenido no determinista aceptado

El esquema siguiente se rechazaría en versiones de SQL Server antes de SQL Server 2005 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  

Consulte también

Requisitos y limitaciones de las colecciones de esquemas XML en el servidor