2010-01-19 10 views
5

Estoy tratando de extender y adaptar un esquema xsd externo (del estándar fixml). Necesito cambiar el tipo de datos de algunos de los elementos, sin tocar el esquema original, sino redefiniéndolo; pero he estado encontrando extremadamente engorroso.XSD: Cómo redefinir el tipo de datos de un tipo simple, por ej. de xs: string a xs: entero

Lo que existe:

campos-base.xsd

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

lo que quiero que se convierta en:

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

Lo que he tratado (pero falló):

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

Libros y red no es Tampoco he ayudado demasiado, así que estoy empezando a cuestionar si esto es teóricamente posible en absoluto.

Respuesta

4

Por lo que yo sé, esto no es posible.

La única redefinen podría hacer validar en XMLSpy era:

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

Es decir, la nueva restricción debe basarse en la restricción de base.

Podría ser que XMLSpy esté equivocado al respecto.

Esta cita tanto críptica de la W3C XML Schema definition:

Dentro de los [niños], cada uno simpleType debe tener un entre sus [hijos] y cada tipoCompuesto debe tener una restricción o la extensión entre sus grand- [children] el · valor real · de cuyo [atributo] base debe ser el igual que el · valor real · de su propio atributo de nombre más espacio de nombres de destino;

podría estar hablando de esto (es esa parte de la especificación de los enlaces XMLSpy para este error).

El único buen ejemplo de redefinición de tipos simples que pude encontrar fue here. En este ejemplo, la redefinición es solo para enumeraciones.

Cuestiones relacionadas