XML Schema – Datentypen bzw. Elementwerte

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.

This entry was posted in XML. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *