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

标签 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 有效吗?如果没有,是否存在其他解决方案来更改属性类型?

最佳答案

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

关于xml - XSD - 可以更改扩展类型中的属性类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15086703/

相关文章:

c++ - 哪一行 XML 无效

xml - XSD 中 <all> <sequence> <choice> 和 <group> 的区别?

xml - 我如何指定一个元素具有一个属性,该属性说明它在 XML 模式中包含多少个子元素?

xml - 从另一个目录运行 build.xml ant

java - 如何使用 C 读取从 JAXB 生成的 XML

xml - 检测 RSS 提要中的新项目

xml - 当另一个元素具有特定值时,在 XSD 中需要 XML 元素吗?

php - 我如何使用 PHP 下载以某种奇怪的方式重定向的 XML 文件?

xml - 我可以创建一个 XSD 模式,将属性放在所有复杂类型上吗?

java - 在 Java Eclipse 项目中存储 XSD 文件的约定