#xsd
#xsd
Вопрос:
Мне нужно создать XML-схему, в которой все узлы <foo>
должны содержать либо одно или более вхождений <c1>
only, либо одно вхождение <c2>
only следующим образом.
<main>
<foo>
<a></a>
<b></b>
<c1></c1>
</foo>
<foo>
<a></a>
<b></b>
<c1></c1>
</foo>
<foo>
<a></a>
<b></b>
<c1></c1>
</foo>
</main>
или
<main>
<foo>
<a></a>
<b></b>
<c2></c2>
</foo>
<foo>
<a></a>
<b></b>
<c2></c2>
</foo>
<foo>
<a></a>
<b></b>
<c2></c2>
</foo>
</main>
Кто-нибудь может мне помочь?
Ответ №1:
Когда у вас возникает ситуация «или — или», ваше решение обычно <xs:choice>
. Используйте атрибуты maxOccurs
и minOccurs
, чтобы ограничить количество отображений элемента. Значение по умолчанию для этих атрибутов равно «1», которое используется, если вы не добавляете эти атрибуты.
Пример фрагмента кода для определения <foo>
элемента. Обратите внимание на использование <xs:choice>
и maxOccurs="unbounded"
<xs:element name="foo">
<xs:complexType>
<xs:sequence>
<xs:element name="a" type="xs:string />
<xs:element name="b" type="xs:string />
<xs:choice>
<xs:element name="c1" maxOccurs="unbounded" type="xs:string />
<xs:element name="c2" type="xs:string />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>