Xml 扩展XSD文件

Xml 扩展XSD文件,xml,xsd,Xml,Xsd,我有一个枚举类型的XSD文件。我想创建一个“扩展”XSD文件,它添加了一些额外的枚举,但在其他方面的行为与主XSD一样 例如,主XSD文件包含以下内容: <xsd:simpleType name="color"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="red"></xsd:enumeration> <xsd:enumera

我有一个枚举类型的XSD文件。我想创建一个“扩展”XSD文件,它添加了一些额外的枚举,但在其他方面的行为与主XSD一样

例如,主XSD文件包含以下内容:

<xsd:simpleType name="color">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="red"></xsd:enumeration>
        <xsd:enumeration value="orange"></xsd:enumeration>
        <xsd:enumeration value="yellow"></xsd:enumeration>
    </xsd:restriction>
</xsd:simpleType>
...
<xsd:element name="myColor" type="color" />

...
我想象中的扩展XSD文件只是将“gold”添加到“color”类型中。现有的“myColor”元素现在可以包含“gold”,如果它使用这个XSD而不是主XSD


这可能吗?

像这样的事情怎么样

<!-- Your base enumeration -->
<xsd:simpleType name="color">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="red"/>
        <xsd:enumeration value="orange"/>
        <xsd:enumeration value="yellow"/>
    </xsd:restriction>
</xsd:simpleType>

<!-- You extended enumeration -->
<xsd:simpleType name="colorEx">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="gold"/>
    </xsd:restriction>
</xsd:simpleType>


<xsd:simpleType name="color_union">
     <xsd:union memberTypes="colorEx color"/>
</xsd:simpleType>

<xsd:element name="myColor" type="color_union"/>


如何将这些文件放在单独的文件中?如果我在扩展xsd中使用xsd:redefinite,并重新定义colorEx,那么我将被限制为colorEx中已经允许的值。所以我不能添加新值。我想我可以将colorEx默认为一个字符串类型。这意味着,如果我直接使用基本XSD,则对类型没有任何限制;任何字符串都是允许的。但是如果我使用扩展XSD,它将受到限制。