Announcement

Collapse
No announcement yet.

Zwei Base Typen für ein Element

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zwei Base Typen für ein Element

    Hallo zusammen,
    ich habe eine Aufgabe, bei der ich einfach nicht weiter komme. Ich soll ein Schema erstellen, dass unter anderem diese Eigenschaft hat:
    "jahre belibig viele Jahre. Ein Jahr ist entweder eine ganze Zahl zwischen -100 und 2012
    (einschließlich) oder einer der Strings AC, BC, after2000 oder unkown."
    Ich weiß einfach nicht, wie ich es realisieren soll, dass das Elemnt entweder einen String oder einen Integer-Wert als Base hat. So weit bin ich:

    [highlight=xml]<xs:element name="Jahre">
    <xs:simpleType>
    <xs:restriction base="xs:string">
    <xs:enumeration value="AC"/>
    <xs:enumeration value="BC"/>
    <xs:enumeration value="after2000"/>
    <xs:enumeration value="unknown"/>
    </xs:restriction>
    </xs:simpleType>
    </xs:element>[/highlight]

    Aber wie soll ich jetzt die Zahl zwischen -100 und 2012 hinbekommen? <xs:enumeration value="[-100-2112]"/> wäre ja völliger Schwachsinn. =)

  • #2
    Ansatz: bei xs:string bleiben und die Inhalte über einen regulären Ausdruck (pattern) definieren.

    Comment


    • #3
      Probiere es mit einer Union zweier vorher definierten einfachen Typen, also etwa
      [highlight=xml]
      <xs:simpleType name="jahre1">
      <xs:restriction base="xs:string">
      <xs:enumeration value="AC"/>
      <xs:enumeration value="BC"/>
      <xs:enumeration value="after2000"/>
      <xs:enumeration value="unknown"/>
      </xs:restriction>
      </xs:simpleType>

      <xs:simpleType name="jahre2">
      <xs:restriction base="xs:integer">
      <xs:minInclusive value="-100"/>
      <xs:maxInclusive value="2012"/>
      </xs:restriction>
      </xs:simpleType>

      <xs:simpleType name="jahre">
      <xs:union memberTypes="jahre1 jahre2"/>
      </xs:simpleType>

      <xs:element name="Jahre" type="jahre"/>
      [/highlight]
      Das sollte zum Validieren so gut funktionieren, nur Tools, die Schemas und ihre Typen auf Klassen in OOP abbilden, kommen mit Union unter Umständen nicht so gut zurecht.

      Comment

      Working...
      X