Skip to content

Latest commit

 

History

History
80 lines (68 loc) · 3.21 KB

File metadata and controls

80 lines (68 loc) · 3.21 KB
title Non-Deterministic Content Models | Microsoft Docs
description View an example of using an XML schema with a non-deterministic content model.
ms.custom
ms.date 03/14/2017
ms.prod sql
ms.prod_service database-engine
ms.reviewer
ms.technology xml
ms.topic conceptual
helpviewer_keywords
non-deterministic content models
content models [XML in SQL Server]
ms.assetid 9d4513e7-dd19-4491-b7c7-28bc7c2f8589
author MightyPen
ms.author genemi

Non-Deterministic Content Models

[!INCLUDEappliesto-ss-asdb-xxxx-xxx-md] Before [!INCLUDEssVersion2005] Service Pack 1 (SP1), [!INCLUDEssNoVersion] rejected XML schemas that had non-deterministic content models.

Beginning with [!INCLUDEssVersion2005] SP1, however, non-deterministic content models are accepted if the occurrence constraints are 0,1, or unbounded.

Example: Non-deterministic content model rejected

The following example attempts to create an XML schema with a non-deterministic content model. The code fails because it is not clear whether the <root> element should have a sequence of two <a> elements or if the <root> element should have two sequences, each with an <a> element.

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  

The schema can be fixed by moving the occurrence constraint to a unique location. For example, the constraint can be moved to the containing sequence particle:

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

Or the constraint can be moved to the contained element:

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

Example: Non-deterministic content model accepted

The following schema would be rejected in versions of [!INCLUDEssNoVersion] before [!INCLUDEssVersion2005] 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  

See Also

Requirements and Limitations for XML Schema Collections on the Server