在带有属性的类型上添加限制(枚举)

时间:2015-10-23 10:22:09

标签: xsd

我遇到了使用属性限制类型的问题。它看起来像这样(我无法改变它)。

<xsd:complexType name="TypeWithAttr" abstract="true">
        <xsd:simpleContent>
            <xsd:extension base="xsd:string">
                <xsd:attribute name="type" type="xsd:string" use="required"/>
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>

我需要它限制,所以它只能采取2个值。我试过这样做

<xsd:complexType name="TypeWithAttrRestriction">
        <xsd:complexContent>
            <xsd:restriction base="TypeWithAttr">
                <xsd:enumeration value="Green"/>
                <xsd:enumeration value="Blue"/>
            </xsd:restriction>
        </xsd:complexContent>
    </xsd:complexType>

但是它说我不能在限制下进行枚举。

1 个答案:

答案 0 :(得分:1)

如果您需要限制包含纯文字的内容,则应使用:simpleContent代替complexContent。 这样的事情应该有效:

 <xsd:complexType name="TypeWithAttrRestriction">
    <xsd:simpleContent>
        <xsd:restriction base="TypeWithAttr">
            <xsd:enumeration value="Green"/>
            <xsd:enumeration value="Blue"/>
        </xsd:restriction>
    </xsd:simpleContent>
</xsd:complexType>