XSD: Wie man den Datentyp eines simple zB neu zu definieren. von xs: String xs: integer
-
21-09-2019 - |
Frage
Ich versuche, ein externes XSD-Schema zu erweitern und Schneider (des FIXML Standard). Ich brauche den Datentyp einige der Elemente zu ändern, ohne das Original-Schema zu berühren, sondern sie neu zu definieren; aber wurden finden es äußerst umständlich.
Was vorhanden ist:
Felder-base.xsd
<xs:simpleType name="LastUpdateTime_t">
<xs:restriction base="UTCTimestamp">
<xs:simpleType>
, was ich will, es werden:
<xs:simpleType name="LastUpdateTime_t">
<xs:restriction base="xs:string">
<xs:simpleType>
Was habe ich versucht (aber nicht):
<xs:redefine schemaLocation="fields-base.xsd">
<xs:simpleType name="LastUpdateTime_t">
<xs:restriction base="xs:string" />
</xs:simpleType>
</xs:redefine>
Bücher und Netz scheinen nicht zu viel entweder geholfen zu haben, so dass ich auf Frage bin ab, wenn dies überhaupt theoretisch möglich ist.
Lösung
Soweit ich das sagen kann, ist nicht möglich.
Die einzige neu definieren ich Validate in XMLSpy machen konnte, war:
<xs:redefine schemaLocation="fields-base.xsd">
<xs:simpleType name="LastUpdateTime_t">
<xs:restriction base="LastUpdateTime_t" />
</xs:simpleType>
</xs:redefine>
Das heißt, muss die neue Beschränkung auf der Basis Einschränkung basieren.
Könnte sein, dass XMLSpy über das falsch ist.
Dies etwas kryptische Zitat aus dem W3C XML Schema-Definition :
Innerhalb der [Kinder], die jeweils simple muss eine haben unter seinen [Kinder] und jede complex muss eine Beschränkung haben oder Erweiterung unter seinem Gross- [Kinder] der tatsächliche Wert von dessen Basis [attribute] muss die sein gleiche wie der tatsächliche Wert seines eigenen name-Attribut plus dem Ziel-Namensraum;
könnte darüber zu reden (es ist, dass ein Teil der Spezifikation auf die XMLSpy Links für diesen Fehler).
Die einzige wirklich gutes Beispiel für eine Neudefinition einfache Typen ich finden konnte, war hier . In diesem Beispiel ist die Neudefinition nur für Aufzählungen.