2010-01-19 7 views
5

Ich versuche, ein externes xsd-Schema (des Fixml-Standards) zu erweitern und anzupassen. Ich muss den Datentyp einiger Elemente ändern, ohne das ursprüngliche Schema zu berühren, sondern neu zu definieren; aber ich habe es äußerst umständlich gefunden.XSD: Wie man den Datentyp eines simpleType neu definiert zB. von xs: string nach xs: integer

Was existiert:

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 net dont s Da mir auch zu viel geholfen hat, fange ich an zu fragen, ob das theoretisch überhaupt möglich ist.

Antwort

4

So weit ich das sagen kann, ist das nicht möglich.

Die einzige umdefinieren 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 darin falsch liegt.

Diese etwas kryptischen Zitat aus dem W3C XML Schema definition:

Innerhalb der [Kinder], die jeweils simple muss eine unter seinen [Kinder] haben und jede complex unter seinen eine Beschränkung oder Erweiterung haben muss grand- [Kinder] der tatsächliche Wert von , dessen Basis [Attribut] der gleiche sein muss wie der tatsächliche Wert seines eigenen Namensattributs plus Zielnamespace;

könnte darüber reden (es ist der Teil der Spezifikation, die XMLSpy für diesen Fehler verweist).

Das einzige wirklich gute Beispiel für die Neudefinition einfacher Typen, die ich finden konnte, war here. In diesem Beispiel dient die Neudefinition nur für Aufzählungen.