Non-Deterministic content models
Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance
Non-deterministic content models are accepted in SQL Server if the occurrence constraints are 0, 1, or unbounded.
Before SQL Server 2005 (9.x) Service Pack 1 (SP1), SQL Server rejected XML schemas that had non-deterministic content models.
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 isn't 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 SQL Server before 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
See also
Σχόλια
https://aka.ms/ContentUserFeedback.
Σύντομα διαθέσιμα: Καθ' όλη τη διάρκεια του 2024 θα καταργήσουμε σταδιακά τα ζητήματα GitHub ως μηχανισμό ανάδρασης για το περιεχόμενο και θα το αντικαταστήσουμε με ένα νέο σύστημα ανάδρασης. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα:Υποβολή και προβολή σχολίων για