Порядок XML-схемы элементов - PullRequest
14 голосов
/ 19 октября 2010

В моем 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>

Ответы [ 3 ]

26 голосов
/ 25 октября 2012

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

10 голосов
/ 21 августа 2012

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

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

0 голосов
/ 21 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...