XSD: come ridefinire il tipo di dati di un simpleType ad es. da xs: stringa xs: integer
-
21-09-2019 - |
Domanda
Sto cercando di estendere e adattare uno schema XSD esterna (dello standard FIXML). Ho bisogno di cambiare il tipo di dati di alcuni degli elementi, senza toccare lo schema originale, ma ridefinendo esso; ma sono stati trovando estremamente ingombrante.
Ciò che esiste:
campi-base.xsd
<xs:simpleType name="LastUpdateTime_t">
<xs:restriction base="UTCTimestamp">
<xs:simpleType>
quello che voglio che diventi:
<xs:simpleType name="LastUpdateTime_t">
<xs:restriction base="xs:string">
<xs:simpleType>
Quello che ho cercato (ma non è riuscito):
<xs:redefine schemaLocation="fields-base.xsd">
<xs:simpleType name="LastUpdateTime_t">
<xs:restriction base="xs:string" />
</xs:simpleType>
</xs:redefine>
Libri e Dont rete sembrano aver aiutato troppo neanche, quindi sto iniziando a mettere in discussione se questo è teoricamente possibile a tutti.
Soluzione
Per quanto posso dire questo non è possibile.
L'unica ridefinire ho potuto fare validate in XMLSpy è stato:
<xs:redefine schemaLocation="fields-base.xsd">
<xs:simpleType name="LastUpdateTime_t">
<xs:restriction base="LastUpdateTime_t" />
</xs:simpleType>
</xs:redefine>
Cioè, la nuova restrizione deve essere basata sulla restrizione di base.
potrebbe essere che XMLSpy è sbagliato su questo.
Questa citazione un po 'criptico dal W3C XML definizione dello schema :
Entro i [i bambini], ogni simpleType deve avere un tra i suoi [i bambini] e ciascuno complexType deve avere una restrizione o estensione tra i suoi nonni [i bambini] il · valore effettivo di · la cui base [attributo] deve essere uguale al valore effettivo · · della propria nome dell'attributo più bersaglio namespace;
potrebbe parlare di questo (che è quella parte della specifica i link XMLSpy a questo errore).
L'unico buon esempio di ridefinire tipi semplici ho trovato è stato qui . In questo esempio, la ridefinizione è solo per le enumerazioni.