XSD: Cómo redefinir el tipo de datos de un simpleType por ejemplo. de xs: string a xs: número entero
-
21-09-2019 - |
Pregunta
Estoy tratando de extender y adaptar un esquema XSD externa (de la norma fixml). Necesito cambiar el tipo de datos de algunos de los elementos, sin tocar el esquema original, pero redefiniéndola; pero se han encontrando muy engorroso.
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 no neta parecen haber ayudado demasiado bien, así que estoy empezando a cuestionar si esto es teóricamente posible en absoluto.
Solución
Por lo que yo puedo decir esto no es posible.
El único que podría hacer redefinen 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 es equivocado acerca de esto.
Esta cita tanto críptica de la W3C XML definición de esquema:
Dentro de los [niños], cada uno simpleType debe tener una entre sus [hijos] y cada complexType debe tener una restricción o la extensión entre sus abuelos [niños] el valor real · · de cuya base [atributo] debe ser el mismo que el valor real · · de su propia nombre del atributo más espacio de nombres de destino;
podría estar hablando de esto (que es la parte de la especificación de los enlaces a XMLSpy de este error).
El único ejemplo muy bueno de la redefinición de los tipos simples que pude encontrar fue aquí . En este ejemplo, la redefinición es sólo para enumeraciones.