【问题标题】:XSD: How to redefine the data type of a simpleType eg. from xs:string to xs:integerXSD:如何重新定义 simpleType 的数据类型,例如。从 xs:string 到 xs:integer
【发布时间】:2011-01-06 15:29:28
【问题描述】:

我正在尝试扩展和定制一个外部 xsd 模式(fixml 标准)。我需要更改一些元素的数据类型,而不触及原始架构,而是重新定义它;但一直发现它非常麻烦。

存在什么:

fields-base.xsd

<xs:simpleType name="LastUpdateTime_t">
           <xs:restriction base="UTCTimestamp">
<xs:simpleType>

我希望它变成什么:

<xs:simpleType name="LastUpdateTime_t">
           <xs:restriction base="xs:string">
<xs:simpleType>

我尝试过的(但失败了):

<xs:redefine schemaLocation="fields-base.xsd">
            <xs:simpleType name="LastUpdateTime_t">
              <xs:restriction base="xs:string" />
            </xs:simpleType>
 </xs:redefine>

书籍和网络似乎也没有太大帮助,所以我开始质疑这在理论上是否可行。

【问题讨论】:

    标签: schema xsd redefine simpletype


    【解决方案1】:

    据我所知这是不可能的。

    我可以在 XMLSpy 中进行验证的唯一重新定义是:

    <xs:redefine schemaLocation="fields-base.xsd"> 
            <xs:simpleType name="LastUpdateTime_t"> 
              <xs:restriction base="LastUpdateTime_t" /> 
            </xs:simpleType> 
    </xs:redefine> 
    

    也就是说,新的限制必须基于基本限制。

    这可能是 XMLSpy 错了。

    W3C XML Schema definition 的这句话有点神秘:

    在 [children] 中,每个 simpleType 必须有一个 在它的 [孩子] 和每个 complexType 必须有一个限制 或其中的扩展 grand-[children] 的·实际值· 其基础 [attribute] 必须是 与自身的·实际值·相同 name 属性加目标命名空间;

    可能是在谈论这个(这是 XMLSpy 链接到此错误的规范的一部分)。

    我能找到的唯一一个重新定义简单类型的好例子是here。在此示例中,重新定义仅适用于枚举。

    【讨论】:

      猜你喜欢
      • 2011-12-04
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      相关资源
      最近更新 更多