다음을 통해 공유


비결정적 콘텐츠 모델

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance

발생 제약 조건이 0, 1 또는 바인딩되지 않은 경우 SQL Server에서 비결정적 콘텐츠 모델이 허용됩니다.

SQL Server 2005(9.x) Service Pack 1 (SP1) 이전에 SQL Server는 비결정적 콘텐츠 모델이 있는 XML 스키마를 거부했습니다.

예제: 비결정적 콘텐츠 모델이 거부됨

다음 예제에서는 비결정적 콘텐츠 모델을 사용하여 XML 스키마를 만들려고 시도합니다. <root> 요소에 두 개의 <a> 요소 시퀀스가 있어야 하는지 또는 <root>요소에 각각 <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

발생 제약 조건을 고유한 위치로 이동하여 스키마를 수정할 수 있습니다. 예를 들어 제약 조건을 포함하는 시퀀스 파티클로 이동할 수 있습니다.

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

또는 제약 조건이 포함된 요소로 이동할 수 있습니다.

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

예: 비결정적 콘텐츠 모델 수락됨

다음 스키마는 SQL Server 2005(9.x) SP1 이전 버전의 SQL Server에서 거부됩니다.

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

참고 항목