Схема Xml - определение дочерних элементов 0- * в любом порядке

Я хочу определить схему xml, в которой элементы Connectors имеют дочерние элементы 0- *. Либо Последовательность, Связь или Сообщение в любом порядке и от 0 до многих раз. Т.е.

<Connectors>
    <Sequence />
    <Association />
    <Message />
    <Sequence />
    <Sequence />
    <Message />
    <Message />
    <Association />
</Connectors>

Я пытался определить следующую схему, но похоже, что порядок фиксирован.

<xs:element name="Connectors">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="Association" minOccurs="0" maxOccurs="unbounded" />
            <xs:element ref="Message" minOccurs="0" maxOccurs="unbounded" />
            <xs:element ref="Sequence" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
</xs:element>
11
задан Torbjörn Hansson 31 August 2010 в 08:50
поделиться

2 ответа

Я решил эту проблему, установив choice и установив атрибуты minOccurs и maxOccurs.

<xs:element name="Connectors">
    <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="Association" />
            <xs:element ref="Message" />
            <xs:element ref="Sequence" />
        </xs:choice>
    </xs:complexType>
</xs:element>
30
ответ дан 3 December 2019 в 01:15
поделиться

К сожалению, в XML-схеме нет практического способа определить «этот набор дочерних элементов в любом порядке, но каждый из них встречается хотя бы один раз».

Вы застряли либо с определенным порядком, либо с одним из набора (возможно, повторяющимся).

РЕДАКТИРОВАТЬ: Нет практического способа, ручное создание каждой возможной последовательности возможно и будет работать, но комбинаторный взрыв быстро выйдет из-под контроля.

0
ответ дан 3 December 2019 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: