Условие выбора элемента схемы

#xsd #schema

#xsd #схема

Вопрос:

Как можно управлять ключевым словом choice, чтобы выполнить следующее условие:

 (Subject amp;amp; MessageBody) || (Subject || MessageBody)
  

У меня есть:

 <xs:choice>
    <xs:element ref="Subject"/>
    <xs:element ref="MessageBody"/>
</xs:choice>
  

Однако Subject и MessageBody не могут сосуществовать в complexType, поскольку set применяет условие XOR.

Ответ №1:

Это решение, которое я, наконец, придумал:

 <xs:choice>
    <xs:sequence>
        <xs:element ref="engine"/>
        <xs:element ref="Type" minOccurs="0"/>
    </xs:sequence>
    <xs:sequence>
        <xs:element ref="Type"/>
        <xs:element ref="engine" minOccurs="0"/>
    </xs:sequence>
</xs:choice>