XSD - как мне потребовать несколько элементов в complexType в любом порядке, но также разрешить любые другие элементы - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь создать документ схемы 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?Любая помощь приветствуется!

...