Я пытаюсь создать XSD и пытаюсь написать определение со следующим требованием:
- Разрешить указанный дочерний элемент появляться любое количество раз (от 0 до неограниченного)
- Разрешить дочерние элементы в любом порядке
Я посмотрел вокруг и нашел различные решения, как это:
<xs:element name="foo">
<xsl:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="child1" type="xs:int"/>
<xs:element name="child2" type="xs:string"/>
</xs:choice>
</xs:complexType>
</xs:element>
Но из того, что я понимаю, xs: choice по-прежнему позволяет выбирать только один элемент. Следовательно, установка MaxOccurs на неограниченное значение, подобное этому, должна означать только то, что "любой" из дочерних элементов может появляться несколько раз. Это точно?
Если приведенное выше решение неверно, как я могу добиться того, что я изложил выше в своем требовании?
РЕДАКТИРОВАТЬ: Что делать, если требование заключается в следующем?
- Элемент child1 child2 может появляться любое количество раз (от 0 до неограниченного)
- Элементы должны быть в любом порядке
- Элементы child3 и child4 должны появляться ровно один раз.
Например, этот xml действителен:
<foo>
<child1> value </child1>
<child1> value </child1>
<child3> value </child3>
<child2> value </child2>
<child4> value </child4>
<child1> value </child1>
</foo>
но это не так (отсутствует child3)
<foo>
<child1> value </child1>
<child1> value </child1>
<child2> value </child2>
<child4> value </child4>
<child1> value </child1>
</foo>