XSD - 可以在扩展类型中更改属性类型

时间:2013-02-26 10:28:43

标签: xml xsd xsd-validation

我想将Name属性的类型从xs:string更改为xs:int,就像在下面的XSD中一样

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns="http://www.my.own/2013/XMLSchema">

    <xs:complexType name="AType">
        <xs:attribute name="Name" type="xs:string" use="required" />
    </xs:complexType>

    <xs:complexType name="BType">
        <xs:complexContent>
            <xs:extension base="AType">
                <xs:sequence>
                    <xs:choice>
                        <xs:element name="Content" type="xs:string"/>
                    </xs:choice>
                </xs:sequence>
                <xs:attribute name="Name" type="xs:int" use="required"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
</xs:schema>

此XSD有效吗?如果没有,是否存在其他改变属性类型的解决方案?

1 个答案:

答案 0 :(得分:1)

不,类型派生的原则是,如果从基类型派生新类型,派生类型的实例仍必须是基类型的有效实例。因此,您无法将属性从字符串更改为int。