У меня есть этот XSD, который ограничивает значение вложенного элемента указанным диапазоном значений.
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Configuration">
<xs:complexType>
<xs:sequence>
<xs:element name="Value">
<xs:complexType>
<xs:sequence>
<xs:element name="NestedValue">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1338"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Прежде всего, я хотел сделать необязательным указание вложенного значения, что легко решается добавлением minOccurs="0" maxOccurs="1"
к элементам «Value» и «NestedValue».
Тогда я хотел разрешить любой xml, кроме xml, который содержит вложенные значения вне диапазона.
пример:
<Configuration>
<Value>
<NestedValue>1337<NestedValue>
<OtherValue>10000<OtherValue>
</Value>
</Configuration>
Я попытался сделать это, используя xs: any-tags, например:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Configuration">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip">
</xs:any>
<xs:element name="Value" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="NestedValue" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1338"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Но это дало мне исключение:
Подстановочный знак «## any» допускает использование элемента «Value» и приводит к неоднозначности модели содержимого. Модель содержимого должна быть сформирована таким образом, чтобы во время проверки последовательности элементов информации об элементе частица, содержащаяся прямо, косвенно или неявно в ней, чтобы попытаться проверить каждый элемент в последовательности, в свою очередь, может быть однозначно определена без изучения содержимого или атрибутов этот элемент и без какой-либо информации об элементах в оставшейся части последовательности.
Как правильно разрешить любой контент?