2009-07-22 4 views
26

Ich bin fest versuchen, eine XSD enthält ein Feld zu definieren, die nur eine der drei folgenden Werte haben kann:XSD Definition für Aufzählungs Wert

  • Grün
  • Red
  • Blau

Im Wesentlichen möchte ich eine strenge Enumeration auf der Schema-Ebene definieren.

Mein erster Versuch erscheint falsch und ich bin mir nicht sicher über den "richtigen" Weg, es zu beheben.

<xs:element name="color"> 
    <xs:complexType> 
     <xs:choice> 
      <xs:element name="green"/> 
      <xs:element name="red"/> 
      <xs:element name="blue"/> 
     </xs:choice> 
    </xs:complexType> 
</xs:element> 

Durch einen automatischen XML-Generator verwendet wird, behandelt es diese Elementnamen als String-Objekte:

<xs0:color> 
    <xs0:green>text</xs0:green> 
</xs0:color> 

Antwort

55

Sie im Rahmen eines simple eine Aufzählung definieren können.

<xs:simpleType name="color" final="restriction" > 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="green" /> 
     <xs:enumeration value="red" /> 
     <xs:enumeration value="blue" /> 
    </xs:restriction> 
</xs:simpleType> 
<xs:element name="SomeElement"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="Color" type="color" /> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 
+5

Ich würde jedoch eine Erweiterung von NMTOKEN anstelle von String empfehlen. Es ist mehr mit der Idee eines Enums, denke ich. Es ist auch mehr Werkzeug-freundlich, besonders mit Code-Generatoren. – skaffman

Verwandte Themen