Condividi tramite


modelli di contenuto non deterministici

Prima di SQL Server 2005 Service Pack 1 (SP1), SQL Server rifiutato XML Schema con modelli di contenuto non deterministici.

A partire da SQL Server 2005 SP1, tuttavia, i modelli di contenuto non deterministici vengono accettati se i vincoli di occorrenza sono 0,1 o non associati.

Esempio: modello di contenuto non deterministico rifiutato

Nello schema dell'esempio viene illustrato il tentativo di creare un elemento XML Schema con un modello di contenuto non deterministico. Il codice ha esito negativo poiché non è possibile determinare se l'elemento <root> debba avere una sequenza di due elementi <a> oppure se l'elemento <root> debba averne due, ognuna 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  

È possibile correggere lo schema spostando il vincolo di occorrenza in una posizione univoca, ad esempio, il vincolo può essere spostato nella particella contenente la sequenza:

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

In alternativa, il vincolo può essere spostato sull'elemento contenuto:

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

Esempio: modello di contenuto non deterministico accettato

Lo schema seguente viene rifiutato nelle versioni di SQL Server prima di 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  

Vedere anche

Requisiti e limitazioni per le raccolte di XML Schema nel server