我有一个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>