XML-схема + элемент complexType + альтернатива последовательности

Я хочу создать схему XML — файл XSD — для применения к документам XML. Рассмотрим следующий XML-документ:

<root>
    <a />
    <b />
    <c />
    <a />
    <a />
    <b />
</root>

Если соблюдаются следующие желаемые ограничения:

  1. ‹ root > — корневой элемент.
  2. Элементы ‹ a >, ‹ b > и ‹ c > могут встречаться неограниченное количество раз.
  3. Элементы ‹ a >, ‹ b > и ‹ c > не группируются. Например, элемент может предшествовать элементу ‹ b > и следовать за ним.

Если бы мне нужно было создать XML-схему для применения к примеру XML-документа, я бы начал со следующего:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema  targetNamespace="http://doesnotmatter.com/"
            xmlns="http://doesnotmatter.com/"
            xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="root"
                min="1"
                max="1">
        <complexType>

            <!-- ? -->

        </complexType>
    </xs:element>

</xs:schema>

Я не знаю, как заполнить элемент ‹ complexType > в моей схеме.
Я не могу использовать элемент ‹ sequence > из-за 3-го ограничения.
Как мне добиться, чтобы моя схема соблюдала все 3 ограничения.

Изменить

Элемент выбора был краеугольным камнем в моей проблеме.
Вот схема XML, соответствующая моим потребностям, описанным выше:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema  targetNamespace="http://doesnotmatter.com/"
            xmlns="http://doesnotmatter.com/"
            xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="root">
    <xs:complexType>

      <xs:choice maxOccurs="unbounded">
        <xs:element name="a" />
        <xs:element name="b" />
        <xs:element name="c" />
      </xs:choice>

    </xs:complexType>
  </xs:element>

</xs:schema>

person user1139666    schedule 05.02.2012    source источник


Ответы (1)


Итак, ваша модель для root: многократно выбирать из этих возможностей: a, b, c. Это оно? Оперативное слово выбрать как в выборе. Может быть, я что-то упускаю, но ответ кажется довольно очевидным.

person Kevin    schedule 09.02.2012