4 Stimmen

XSD-Aufzählung für einen Wertebereich

Wie üblich muss ich eine XSD-Datei erstellen, um die XML-Struktur zu überprüfen.

Nachdem ich die XSD (mit XMLSpy) generiert habe, habe ich einen Teil der Datei gefunden, der mir Probleme bereitet. Ich habe eine Aufzählung wie diese:

    <xs:enumeration value="1"/>
    <xs:enumeration value="1011"/>
    <xs:enumeration value="1032"/>

und so weiter. Das Problem ist, dass jede beliebige ganze Zahl in dieser Aufzählung als gültig angesehen werden muss, und ich kann keine Aufzählungs-Tags von 1 bis, sagen wir, 65635 schreiben.

Und ich weiß auch nicht, wie viele dieser Aufzählungselemente notwendig sein werden, da die Anzahl dieser Aufzählungstags in der XML-Datei nicht festgelegt ist!

Wie kann ich der XSD mitteilen, dass jeder ganzzahlige Wert in Ordnung ist, und dass es keine minimalen oder maximalen Übereinstimmungen in der XML-Datei für diese Aufzählung gibt?

Vielen Dank im Voraus (und Entschuldigung für mein Englisch!)

7voto

jasso Punkte 13386

Ihre Frage enthält nicht genügend Informationen, um eine genau richtige Antwort zu geben, aber das wird Ihr Problem wahrscheinlich lösen. 

Wahrscheinlich haben Sie einen Code wie diesen:

<xs:element name="foobar" type="enumType"/>

<xs:simpleType name="enumType">
  <xs:restriction base="xs:integer">
    <xs:enumeration value="1"/>
    <xs:enumeration value="1011"/>
    <xs:enumeration value="1032"/>
  </xs:restriction>
</xs:simpleType>

Dieser Teil des Schemas definiert ein Element <foobar> und ein einfacher Typ enumType das ist der Inhaltstyp der Datei <foobar> Element. Sie haben also gefragt:

Wie kann ich der XSD mitteilen, dass jede Integer-Wert in Ordnung ist, und dass es keine minimalen oder maximalen Übereinstimmungen in der XML-Datei für diese Aufzählung gibt?

Sie müssen nicht alle gültigen Werte für <foobar> wie Sie es bei DTD tun müssen. Stattdessen können Sie einfach die vordefinierte Typen von XML-Schema in der type Attribut.

Hier ist ein Beispielcode, der ein Element definiert <foobar> und kann eine beliebige ganze Zahl enthalten.

<xs:element name="foobar" type="xs:integer"/>

Sollte ich Ihre Frage falsch interpretiert haben, hinterlassen Sie bitte einen Kommentar und definieren Sie Ihr Problem genauer. Es wäre auch hilfreich, mehr über Ihr Schema zu erfahren.

4voto

kasten Punkte 592

Warum müssen Sie eine Aufzählung und nicht einen einfachen Integer-Typ verwenden?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X