Ответ 1
Я сделал это возможным, используя группу выбора: D
В моем 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>
Я сделал это возможным, используя группу выбора: D
Используйте xs:all
вместо xs:sequence
.
Измените xs:sequence
в документе схемы на xs:all
. Все группы, содержащие ссылки на (или объявления) элементов A, B и C, выполняются тогда и только тогда, когда A, B и C присутствуют в некотором порядке. Элементы могут иметь minOccurs
значение 0, чтобы сделать их необязательными (например, ваш элемент PD1_PatientAdditionalDemographicSegment
).
В XSD 1.0 дети из группы должны иметь maxOccurs
of 1, что некоторые люди считают неудобно ограничительными, но в вашем случае это то, что вы хотите в любом случае. В XSD 1.1 это ограничение отменено.