Порядок элементов XML-схемы

В моем XSD я хочу иметь возможность указать, что порядок элементов не имеет значения. Это то, что у меня есть:

<xs:element name="ADT_A08_231_GLO_DEF">
  <xs:complexType>
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="EVN_EventTypeSegment" type="xs:string" />
      <xs:element minOccurs="1" maxOccurs="1" name="PID_PatientIdentificationSegment" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="PD1_PatientAdditionalDemographicSegment" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
</xs:element>

Как я могу сделать это так, чтобы элементы EVN и PID могли возникать случайными (сначала EVN, затем PID или первый элемент PID, а затем элемент EVN) в файле XML?

<EVN_EventTypeSegment>Test</EVN_EventTypeSegment>
<PID_PatientIdentificationSegment>PIDTest</PID_PatientIdentificationSegment>

или

<PID_PatientIdentificationSegment>PIDTest</PID_PatientIdentificationSegment>
<EVN_EventTypeSegment>Test</EVN_EventTypeSegment>

Ответ 1

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

Ответ 2

Используйте xs:all вместо xs:sequence.

Ответ 3

Измените xs:sequence в документе схемы на xs:all. Все группы, содержащие ссылки на (или объявления) элементов A, B и C, выполняются тогда и только тогда, когда A, B и C присутствуют в некотором порядке. Элементы могут иметь minOccurs значение 0, чтобы сделать их необязательными (например, ваш элемент PD1_PatientAdditionalDemographicSegment).

В XSD 1.0 дети из группы должны иметь maxOccurs of 1, что некоторые люди считают неудобно ограничительными, но в вашем случае это то, что вы хотите в любом случае. В XSD 1.1 это ограничение отменено.