Schema: Restriction bei Attribut und Element

Ungel

Grünschnabel
Hallo zusammen,

ich möchte das XML Elemet <elem value="1">description</elem> in einem Schema beschreiben.
Es sollen sowohl die Werte für das Attribut, als auch die Werte für das Element vorgegeben werden, d.h. value soll die Werte -1, 0, 1, 2 und 3 haben können, das Element die Werte foo, bar und description.

Ich habe folgenden Ansatz:
Code:
<xs:element name="orderStatus">
  <xs:complexType>
     <xs:attribute name="value">
  	<xs:simpleType>
  	  <xs:restriction base="xs:integer">
  	    <xs:minInclusive value="-1" />
  	    <xs:maxInclusive value="3" />
          </xs:restriction>
  	<xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>

Ich habe versucht, die Restriction für die Werte des Elements mittels
Code:
<xs:restriction base="xs:string">
  <xs:enumeration value="foo"/>
  <xs:enumeration value="bar"/>
  <xs:enumeration value="description"/>
</xs:restriction>
unterhalb des complexType zu hängen, bekomme da allerdings den Fehler, dass die Restriction ein simpleTyp (das auf String basierend) wäre. Es hilft mir aber auch nichts, den complexType durch einen simpleType zu ersetzen, da dieser ja keine Attribute zulässt.

Ich steht gerade voll auf dem Schlauch, oder ist das wirklich nicht so einfach?

Gruß ungel
 
Zuletzt bearbeitet:
Für alle, die ein ähnliches Problem haben, hier die Lösung:
Code:
<xs:simpleType name="restric">
  <xs:restriction base="xs:string">
    <xs:enumeration value="foo"/>
    <xs:enumeration value="bar"/>
    <xs:enumeration value="description"/>
  </xs:restriction>
</xs:simpleType>

<xs:complexType>
  <xs:simpleContent>
    <xs:extension base="restric">
      <xs:attribute name="value">
        <xs:simpleType>
          <xs:restriction base="xs:integer">
            <xs:minInclusive value="-1" />
            <xs:maxInclusive value="5" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:extension>
  </xs:simpleContent>
</xs:complexType>

Gruß Ungel
 
Zurück