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

时间:2013-10-24 08:42:14

标签: xml xsd

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

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

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

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

干杯, 达里尔

1 个答案:

答案 0 :(得分:1)

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

定义一个微不足道的限制可能更好:

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

但即便如此,你需要知道你的类型不是xs的简单别名:positiveInteger;例如,从positiveInteger派生的类型不能替代masterDataKey。