XSD: How to redefine the data type of a simpleType eg. from xs:string to xs:integer

我与影子孤独终老i 提交于 2020-01-13 09:50:09

问题


I am trying to extend and tailor an external xsd schema (of the fixml standard). I need to change the data type of some of the elements, without touching the original schema, but by redefining it; but have been finding it exceedingly cumbersome.

What exists:

fields-base.xsd

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

what I want it to become:

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

What I have tried (but failed) :

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

Books and net dont seem to have helped too much either, so I am starting to question if this is theoretically possible at all.


回答1:


As far as I can tell this is not possible.

The only redefine I could make validate in XMLSpy was:

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

That is, the new restriction must be based on the base restriction.

Could be that XMLSpy is wrong about this.

This somewhat cryptic quote from the W3C XML Schema definition:

Within the [children], each simpleType must have a among its [children] and each complexType must have a restriction or extension among its grand-[children] the ·actual value· of whose base [attribute] must be the same as the ·actual value· of its own name attribute plus target namespace;

might be talking about this (it is that part of the spec the XMLSpy links to for this error).

The only really good example of redefining simple types I could find was here. In this example, the redefinition is only for enumerations.



来源:https://stackoverflow.com/questions/2090855/xsd-how-to-redefine-the-data-type-of-a-simpletype-eg-from-xsstring-to-xsinte

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!