XML-схема для соответствия следующему («все», с неограниченным maxOccurs?) - PullRequest
12 голосов
/ 30 сентября 2010

Скажите, у меня есть элемент, назовите его <A>.<A> может иметь дочерние типы <B> и <C>.Теперь - вот поворот.Любое число <B> и <C> детей может жить в <A> в любом порядке.

Например:

<A>
  <C>
  <C>
  <B>
  <C>
  <B>
  <B>
  <C>
  ...
</A>

Существует ли правило схемы, которое подходит для этого?Похоже, что "все" будет работать, если бы я мог поставить maxOccurs = "неограниченный", но я думаю, что это не разрешено.

Ответы [ 2 ]

28 голосов
/ 30 сентября 2010

Отвечая на мой собственный вопрос - выглядит как транг (http://www.thaiopensource.com/relaxng/trang.html) дал мне ответ:

<xs:element name="A">
  <xs:complexType>
    <xs:choice maxOccurs="unbounded">
      <xs:element ref="B"/>
      <xs:element ref="C"/>
    </xs:choice>
  </xs:complexType>
</xs:element>

Очень круто!

1 голос
/ 08 марта 2018
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root" type="root"/>
  <xs:complexType name="root">
    <xs:choice minOccurs="0">
      <xs:element name="a"/>
    </xs:choice>
  </xs:complexType>
</xs:schema>

Эта схема проверяет

<root>
</root>

Но если вы пропустите minOccurs="0" из <xs:choice>, это не так.

Она проверяет

<root>
  <a/>
</root>

без minOccurs="0".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...