XML Schema元素的顺序

时间:2010-10-19 19:09:57

标签: xsd

在我的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元素在XML文件中随机出现(首先是EVN,然后是PID或第一个PID元素,然后是EVN元素)?

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

或:

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

3 个答案:

答案 0 :(得分:25)

使用xs:all代替xs:sequence

答案 1 :(得分:10)

将架构文档中的xs:sequence更改为xs:all。当且仅当A,B和C以某种顺序存在时,才满足包含对元素A,B和C的引用(或声明)的全组。这些元素可能会将minOccurs设置为0以使其可选(例如您的PD1_PatientAdditionalDemographicSegment元素)。

在XSD 1.0中,一个全组的孩子必须有maxOccurs的1,有些人会发现这种情况令人不舒服,但在你的情况下,这就是你想要的。在XSD 1.1中,解除了限制。

答案 2 :(得分:-1)

我通过使用选择组使这成为可能:D