Схема XML + элемент complexType + альтернатива последовательности - PullRequest
1 голос
/ 06 февраля 2012

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

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

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

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

Если бы мне нужно было создать схему 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>

Я не знаю, как заполнить элемент в моей схеме.
Я не могу использовать элемент из-за 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>

1 Ответ

0 голосов
/ 09 февраля 2012

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

...