Можно ли использовать xs:union для complexTypes?
<xs:element name="Kunde" type="tKunde"/>
<xs:complexType name="tKunde">
<xs:union memberTypes="tPerson tStudent"></xs:union>
</xs:complexType>
<xs:complexType name="tPerson">
<xs:sequence>
<xs:element name="Vorname" type="xs:string"/>
<xs:element name="Nachname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="tStudent">
<xs:complexContent>
<xs:extension base="tPerson">
<xs:sequence>
<xs:element name="Matrikelnummer" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Вот как это должно выглядеть. Задача состоит в том, чтобы вывести ученика из личности, а затем сделать возможным использование одного из двух типов для элемента Кунде.
Это кажется недействительным.
1 ответ
Решение
Вы не можете использовать xs:union для этого. Вы можете использовать xs:choice или поместить элементы в группу подстановки, чтобы любой из них мог появиться вместо элемента в начале группы подстановки.