xml - 是否可以在 XSD 中重命名基本类型

标签 xml xsd

我正在开发一些 xsd,它包含许多标识符以通过 ID 共享主数据。
我并不热衷于将这些标识为 positiveInteger 也不想创建额外的间接级别,而是希望定义我自己的类型,我只需将这些类型重命名为 positiveInteger

我的问题是,以下合法吗?

<xs:complexType name="masterDataKey">
    <xs:simpleContent>
      <xs:extension base="xs:positiveInteger" /> 
    </xs:simpleContent>
</xs:complexType>

如果没有,那么我可以选择哪些选项。

干杯,
达里尔

最佳答案

好吧,您的示例不是简单的重命名。您已经创建了一个 complexType,而 xs:positiveInteger 是一个 simpleType,因此您将无法将其用作例如属性的类型(它必须是简单的)。

定义一个简单的限制可能更好:

<xs:simpleType name="masterDataKey">
    <xs:restriction base="xs:positiveInteger" /> 
</xs:simpleType>

但即便如此,您仍需要注意您的类型不是 xs:positiveInteger; 的简单别名;例如,从 positiveInteger 派生的类型将不能替代 masterDataKey。

关于xml - 是否可以在 XSD 中重命名基本类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19561059/

相关文章:

xsd - 如何禁用文档根目录的创建

xslt 中的 XML 命名空间处理

xml - 使用 XSLT 计算 XML 中字符串的出现次数

java - 需要不同的父子命名空间前缀

java - 使用 JAXB 解析 XML

html - 如何在 XML Schema 中创建允许任何 HTML 元素作为其子元素的元素?

xml - 不合格的 XSD 全局属性引用

java - 元素类型 "META"必须由匹配的结束标记 "</META>"终止。使用 XSL 从 XML 文件生成 PDF 时

C# XML 序列化/反序列化

xml - 正则表达式过滤器 log4j2