Недетерминированные модели содержимого
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Недетерминированные con режим палатки ls принимаются в SQL Server, если ограничения вхождения имеют значение 0, 1 или не связаны.
До SQL Server 2005 (9.x) с пакетом обновления 1 (SP1) SQL Server отклонил схемы XML, недетерминированные режим палатки ls.
Пример. Отклонение недетерминированной модели содержимого
В следующем примере предпринимается попытка создать 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 до SQL Server 2005 (9.x) с пакетом обновления 1 (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