Я пишу XSD, и у меня есть только базовое понимание тега <choice>
. У меня он работает с одним разделом, но не с другим разделом, имеющим attribute
.
Например, все элементы являются необязательными, но если у меня нет одного, мне нужно иметь другой. Это нормально, если есть 2 элемента, но у меня их 3.
Посмотрите на раздел схемы ниже. У меня может быть либо message
, либо scan
, но не include
, либо я могу иметь include
, но не message
или scan
.
<xs:element name="messages">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="n:properties"/>
<xs:choice>
<xs:sequence>
<xs:element ref="n:message" maxOccurs="unbounded"/>
<xs:element ref="n:scan" minOccurs="0"/>
</xs:sequence>
<xs:element ref="n:scan"/>
</xs:choice>
<xs:attribute name="include"/>
</xs:sequence>
</xs:complexType>
</xs:element>
На данный момент это работает для message
и scan
, но, очевидно, выдает ошибку на include
, потому что у меня еще нет выбора.
Может ли кто-нибудь показать мне несколько примеров того, как я буду делать (message OR scan) OR include
?
Спасибо
include
элементом? - person Lukas Eder   schedule 21.08.2012message
, например<messages include="messages/moreMessages.xml"/>
. Таким образом, это самозакрывающийся тег, и он просто более удобочитаем, особенно при включении нескольких файлов. - person eoinzy   schedule 21.08.2012