Я пытаюсь создать документ схемы XSD с концептуально простыми требованиями, но в течение двух дней я безуспешно исследовал и протестировал решения.Пожалуйста, помогите!
Я пытаюсь требовать, чтобы каждый элемент "item" включал в себя количество необходимых в любом порядке подэлементов, но затем также разрешал расширять элементы "item" любыми другими произвольными подэлементами..
Концептуально, это то, что мне нужно:
<xs:element name="item">
<xs:complexType>
<xs:all>
<xs:element name="title" type="xs:string"></xs:element>
<xs:element name="id" type="xs:int"></xs:element>
<xs:element name="description" type="xs:string"></xs:element>
<xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded">
</xs:all>
</xs:complexType>
</xs:element>
То есть оба следующих условия должны быть действительными:
<item>
<title>Some-title</title>
<id>1</id>
<description>Some-description</description>
</item>
<item>
<description>Some-description</description>
<id>1</id>
<title>Some-title</title>
<customProperty>I don't care about other elements</customProperty>
</item>
Но это не должнобыть действительным:
<item>
<title>Some invalid item with no id</title>
<description>Some-description</description>
<otherProperty>Other properties should simply be irrelevant - I only care that all required fields are provided</otherProperty>
</item>
Обратите внимание, что на самом деле мне нужно около двенадцати конкретных свойств, а не только «id», «title» и «description», но я здесь их опущил для краткости.Принцип тот же - они должны быть перечислены по мере необходимости, но в любом порядке.
Я не контролирую XML - цель состоит в том, чтобы создать свободный XSD-документ для проверки XML-представлений от клиентов.
Мне кажется, это простой вариант использования, но мое исследование еще не привело меня к решению.
Возможно ли это с XSD?Любая помощь приветствуется!