是否可以在派生的complexType中使用类型的并集?

时间:2018-11-16 16:25:41

标签: xsd restriction complextype

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

0 个答案:

没有答案