Ограничение однозначного соответствия примитивов
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
В XSD сложные модели содержимого ограничены правилом ограничения однозначного соответствия примитивов. Это правило требует, чтобы каждый элемент в документе экземпляра соответствовал однозначно одному <xsd:element>
элементу или <xsd:any>
частице в его родительском кон режим палатки l. Любая схема, которая содержит тип с потенциально неоднозначной моделью содержимого, отклоняется.
Наиболее распространенными причинами неоднозначности являются <xsd:any>
подстановочные знаки и частицы, имеющие диапазоны вхождения переменных, например minOccurs maxOccurs < . Например, следующий con режим палатки l является неоднозначным, так как <e1>
элемент может совпадать с <xsd:element>
элементом или элементом<xsd:any>
.
<xsd:element name="root">
<xsd:complexType>
<xsd:choice>
<xsd:element name="e1"/>
<xsd:any namespace="##any"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
Следующая модель содержимого также является неоднозначной:
<xsd:element name="root">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="e1" maxOccurs="2"/>
<xsd:element name="e2" minOccurs="0"/>
<xsd:element name="e1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Хотя документ, например <root><e1/><e2/><e1/></root>
, можно проверить однозначно, документ, такой как <root><e1/><e1/></root>
не может, потому что он не ясно, к чему <xsd:element>
ссылается второй <e1/>
. Даже если документы можно проверить однозначно, схема будет отклонена, поскольку возможность неоднозначности существует.
Чтобы значение con режим палатки l было допустимым, необходимо проверить любой экземпляр однозначно, не глядя вперед. Например, рассмотрим следующую модель содержимого:
<xsd:element name="root">
<xsd:complexType>
<xsd:choice>
<xsd:sequence>
<xsd:element name="e1"/>
<xsd:element name="e2"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element name="e1"/>
<xsd:element name="e3"/>
</xsd:sequence>
</xsd:choice>
</xsd:complexType>
</xsd:element>
Для такого документа, как <root><e1/><e3/></root>
, последовательность <e1/><e3/>
однозначно совпадает со вторым элементом <xsd:sequence>
. Тем не менее, поскольку не <xsd:element>
<e1/>
удается определить соответствие, не глядя вперед<e3/>
, con режим палатки l нарушает правило ограничения UPA.
Следующие шаги
Следующий документ опубликован консорциумом World Wide Web (W3C) и содержит техническое описание ограничения однозначного соответствия примитивов:
«XML-схема. Часть 1, структуры, второе издание, W3C Proposed Edited Recommendation»:
Раздел 3.8.6. Ограничения компонентов схемы для группы моделей
Приложение H. Анализ ограничения однозначного соответствия примитивов (не нормативный)
Чтобы просмотреть документ, перейдите по адресу http://www.w3.org/TR/xmlschema-1.