Определение элемента схемы с вложенными элементами в ЛЮБОМ порядке - PullRequest
0 голосов
/ 14 апреля 2009

Я пытаюсь создать элемент в схеме, где его подтипы могут появляться в любом порядке и столько раз, сколько необходимо:

    <xs:element name="workflowNodes">
    <xs:complexType>
        <xs:sequence minOccurs="0" maxPO>
            <xs:element ref="nodeType1" />
            <xs:element ref="nodeType2" />
            <xs:element ref="nodeType3" />
            <xs:element ref="nodeType4" />
        </xs:sequence>
    </xs:complexType>
</xs:element>

где узлы nodeType (n) могут быть в любом порядке и при необходимости повторяться.

Также я попробовал:

Но компилятор не работает, жалуясь, что nodeType2 недействителен, если нет nodeType1.

Что мне здесь не хватает?

Заранее спасибо.

1 Ответ

2 голосов
/ 14 апреля 2009

Вы сможете получить свои результаты, выполнив следующее:

<xs:element name="workflowNodes">
        <xs:complexType>
                <xs:choice minOccurs="0" maxOccurs="unbounded">
                        <xs:element ref="nodeType1" />
                        <xs:element ref="nodeType2" />
                        <xs:element ref="nodeType3" />
                        <xs:element ref="nodeType4" />
                </xs:choice>
        </xs:complexType>
</xs:element>

дает вам возможность выбрать один из элементов, а многократное появление xs: choice позволяет выбирать каждый элемент столько раз, сколько вам нужно.

Марк

...