У меня есть тип XSD, который содержит элемент с абстрактным типом.
Есть несколько реализаций этого типа.
Предоставляет ли XSD способ показать, что некоторые из производных типов могут использоваться?
В приведенном ниже примере у меня есть 3 реализации BasicSequence
. Существует ли способ сказать, что только два из них могут быть использованы в RealRoot
?
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:complexType name="BasicSequence" abstract="true">
<xs:sequence>
<xs:element name="ElementA" type="xs:string"/>
<xs:any/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="BasicRoot">
<xs:sequence>
<xs:element name="RealRoot" type="BasicSequence"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MySequence1">
<xs:complexContent>
<xs:restriction base="BasicSequence">
<xs:sequence>
<xs:element name="ElementA" type="xs:string"/>
<xs:element name="ElementB1" type="xs:string"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="MySequence2">
<xs:complexContent>
<xs:restriction base="BasicSequence">
<xs:sequence>
<xs:element name="ElementA" type="xs:string"/>
<xs:element name="ElementB2" type="xs:string"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="MySequence3">
<xs:complexContent>
<xs:restriction base="BasicSequence">
<xs:sequence>
<xs:element name="ElementA" type="xs:string"/>
<xs:element name="ElementB3" type="xs:string"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="RealRoot">
<xs:complexContent>
<xs:restriction base="BasicRoot">
<xs:sequence>
<!-- Use union of MySequence1 and MySequence2 here! -->
<xs:element name="RealRoot" type="BasicSequence"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:schema>