XML Schema - Datentypen bzw. Elementwerte Mit XML Schema kann man eigentliche "eigene" Datentypen erstellen, indem man die Daten, die eingegeben werden dürfen, gekonnt begrenzt.

Mit XML Schema kann man bis zu einem gewissen Grad, eigene Datentypen schaffen. Das bedeutet, dass man z.B. das Element "Postleitzahl" so definieren kann, das es nur aus maximal fünf Zahlen bestehen darf, damit das Dokument gültig ist. So kann man über XML Schema auf diese Weise sehr spezifisch festlegen, welche Daten, bzw. Datenmengen ein Element aufnehmen darf. Diese Bedingungen muss der bestimmte Wert einhalten, damit das Element, und somit das gesamte XML Dokument gültig ist.
Nehmen wir einmal nur ein kleines Beispiel. Sie haben innerhalb eines XML Dokumentes das Element <alter>. Der Wert dieses Elementes soll logischerweise mindestens 0 sein, aber maximal 120 (wobei das wohl schon hoch gegriffen ist).

Das XML Schema (nur für das Element "alter") sähe so aus:

<xs:element name="alter">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>

</xs:simpleType>
</xs:element>


Zunächst wird, wie wir es kennen das Element definiert, durch <xs:element>. Wie Sie im letzten Teil des Workshops gelernt haben, muss XML Schema jetzt davon ausgehen, das das Element "alter" ein komplexes Element ist. Da dies jedoch nicht der Fall ist, wird mit dem nächsten Befehl <xs:simpleType> angegeben, dass es sich um ein einfaches Element handelt. Nun wird es interessant. Jetzt kommt die Festlegung, bzw. die Eingrenzung des Wertebereichs, durch den Befehl <xs:restriction>.
Im wird eine Basis gegeben, in dem Fall ist es der Datentyp integer, also eine Ganzzahl. Von dieser Basis aus, wird das Element weiter eingegrenzt. Die folgenden Befehle definieren den Minimalwert, und den Maximalwert. Und schon ist das Element in seinem Wertebereich eingeschränkt worden.

Die Definition kann auch noch ein wenig abgeändert werden. So können Sie den Wertebereich einmal definieren, und dann auf verschiedene Elemente anwenden.
Im folgenden wird der Wertetyp "alter" definiert:
<xs:simpleType name="alter">
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>

Der Name des Typs wird über das name-Attribut definiert. Über diesen Namen kann man dann von der Definition eines Elementes auf den Datentyp verweisen.
Das folgende Beispiel definiert ein Element <dein_alter>. Über das Attribut type="" wird auf den Datentyp bzw. den Wertebereich verwiesen. Dieser wurde weiter oben definiert. Sie könnten jetzt mehrere Elemente mit diesem Wertebereich definieren.
<xs:element name="dein_alter" type="alter" />

Reguläre Ausdrücke verwenden

Bei der Definition von Wertebereichen können auch eine Form von Regulären Ausdrücken verwendet werden.
Die folgende XML Schema Typ-Definition begrenzt den Zeichenbereich des Elementes "name" auf das kleine ABC.

<xs:element name="name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]" />
</xs:restriction>
</xs:simpleType>
</xs:element>


Sie können die Typ-Definition, wie oben beschrieben, auch wieder unabhängig vom Element definieren. Bei dieser Begrenzung wird als Basis der Datentyp "string", also Zeichenkette definiert.
Mit dem Befehl xs:pattern wird der Wertebereich in Form eines Regulären Ausdrucks definiert.
Mit dem oberen Regulären Ausdruck wird nur das kleine ABC aktzeptiert. Mit folgendem Regulären Ausdruck wird sowohl die Buchstaben aus dem Großen, als auch aus dem Kleinen ABC aktzeptiert:
<xs:pattern value="[a-zA-Z]" />

Mit dem nächsten Beispiel werden nur Zahlen von 0-9 als Wert angenommen.
<xs:pattern value="[0-9]" />

Dies bringt uns auf die Anwendung für unsere Postleitzahl. Hierbei wird das Element "<plz>" definiert:

<xs:element name="plz">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>

<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]" />

Es werden fünf Zeichen definiert. Diese dürfen nur Werte von 0-9 aufnehmen.
Das Beispiel der Postleitzahl kann auch durch diesen Regulären Ausdruck erreicht werden:
<xs:pattern value="[0-9]{5}" />
Wie bereits zuvor soll das Element aus fünf Zahlen, von 0-9 bestehen.

Wie Sie sehen lassen sich Reguläre Ausdrücke in XML Schema bei den "Bedingten Inhalten" sehr gut verwenden.

Maximale/ Minimale Länge bei Zeichenketten

Folgendes Beispiel definert ein Element "<pseudo>". Dieses soll eine Zeichenkette sein, die aus minimal fünf Zeichen, und maximal aus 10 Zeichen bestehen.

<xs:element name="pseudo">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
<xs:maxLength value="8"/>

</xs:restriction>
</xs:simpleType>
</xs:element>


Die Eingrenzung der Zeichenlänge wird, durch die Elemente <xs:minLength /> und <xs:maxLength /> erreicht.

Feste Werte definieren

Ähnlich wie bei der Definition von Attributen kann man auch mit XML Schema feste Werte für ein Element definieren.
In diesem Beispiel wird ein Element "<werbung>" definiert. Dieses Element ist nur gültig, wenn der Wert entweder "Banner, Newsletteranzeige oder Textanzeige" ist.

<xs:element name="werbung">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Banner"/>
<xs:enumeration value="Newsletteranzeige"/>
<xs:enumeration value="Textanzeige"/>

</xs:restriction>
</xs:simpleType>
</xs:element>

Was mit DTDs nicht möglich war, wird mit XML Schema nun möglich. der Benutzer kann die Werte, die als gültig gelten sollen, sehr genau spezifizieren. So wird kann man also durch eine genau Anwendung von XML Schema verhindern, das falsche Daten aufgenommen werden.

Bookmark setzen... These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Bloglines
  • MisterWong
  • MySpace
  • Reddit
  • SEOigg
  • Technorati
  • TwitThis
  • Y!GG
  • Google Bookmarks

Weiterführende Links: