Homepage-Webhilfe Event-Banner

Einfache Typen

Als einfacher Typ wird ein Datentyp bezeichnet, welcher lediglich „einfache“ Werte (z. B. eine Zeichenkette / einen Text oder eine Zahl) annehmen kann. Die definierten Datentypen können dann später sowohl in Attributen als auch in Elementen verwendet werden. Attribute unterstützen jedoch nur einfache Datentypen. Als Basis für alle Datentypen dienen die sogenannten Basisdatentypen. Die Basisdatentypen wurden vom W3C festgelegt und sind fester Bestandteil der XSD-Spezifikation. Die folgende Tabelle zeigt die wichtigsten verfügbaren Basisdatentypen:

Name Beschreibung Beispiele
string Zeichenkette (bestehnd aus 0, 1 oder mehreren Zeichen) Hallo
boolean Wahrheitswert true, 1, false, 0
integer Zahlenwert ggf. mit Vorzeichen -46, 0, 875
nonNegativeInteger positiver Zahlenwert oder 0 0, 72, 875
positiveInteger positiver Zahlenwert 1, 72, 875
nonPositiveInteger negativer Zahlenwert oder 0 -463, -97, 0
negativeInteger negativer Zahlenwert -463, -97, -1
float Fließkommazahl 32bit 2.4
double Fließkommazahl 64bit 3.14159
decimal Dezimalzahl 69, 581.4603
date Datumgsangabe 2017-01-29
time Uhrzeitangabe 20:30:45
dateTime Datumsangabe mit Uhrzeit 2017-01-29T20:30:45
ID eindeutiger Name arbeitsspeicher
IDREF Referenz auf einen eindeutigen Namen arbeitsspeicher
IDREFS Referenz auf einen oder mehrere eindeutige(n) Namen prozessor arbeitsspeicher

Wichtig: Verwenden Sie im XSD-Skript einen Namensraum für die Bestandteile von XSD selbst, was i. d. R. der Fall ist, so müssen Sie bei der Angabe eines solchen vordefinierten Datentyps auch den Namensraumpräfix mit angeben (z. B. xs:string an Stelle von string).

Um nun einen einfachen Datentyp zu deklarieren, nutzen wir das Element simpleType. Mit dem Attribut name lässt sich der Name des definierten Datentyps festlegen. Dieser Name kann dann später bei der Datentypangabe in Elementen und Attributen innerhalb des XSD-Skripts verwendet werden. Innerhalb des simpleType-Elements notieren Sie nun das restriction-Element. Über das Attribut base können Sie die „Grundlage“ des Datentyps festlegen. Hier können Sie einen der oberen Datentypen (inklusive dem Namensraumpräfix) oder auch einen eigendefinierten Datentyp angeben. Das restriction-Element dient eigentlich dazu, einen Datentyp einzuschränken (z. B. in der Länge oder im Wertebereich). Darauf gehen wir jedoch erst später ein. Die Angabe eines eigenen Datentyps als Basis wäre daher aus jetziger Sicht sinnlos bzw. unnötig. Das restriction-Element hat fürs Erste also keine Kindelemente und darf deshalb auch als leeres Element notiert werden.

<xs:simpleType name="speicher">
    <xs:restriction base="xs:integer" />
</xs:simpleType>

Nachdem wir einen Datentyp definiert haben, können wir den Datentyp in einem Element verwenden. Um ein Element zu deklarieren, benötigen wir das element-Element. Über das Attribut name wird der Name des Elements (dieser wird dann auch in der XML-Datei als Elementname verwendet) und über das type-Attribut der dazugehörige Datentyp festgelegt.

<xs:element name="arbeitsspeicher" type="speicher" />

Nachdem unser selbst definierter Datentyp bisher nichts anderes als der Datentyp xs:integer ist, hätten wir die Definition des Datentyps auch weglassen können und bei der Element-Definition direkt xs:integer als Datentyp angeben können.

<xs:element name="arbeitsspeicher" type="xs:integer" />

Die an dieser Stelle vielleicht etwas ausführliche und „umständliche“ Erklärung soll Ihnen jedoch später den Einstieg in die Themen Einschränkungen und Ableitung erleichtern. Eine weitere Variante zur Datentypdefinition ist die Definition eines anonymen Datentyps. Anonyme Datentypen haben keinen Namen und werden direkt bei der Element- oder Attribut-Deklaration angegeben. Sinnvoll ist diese Variante nur dann, wenn Sie den dort definierten Datentyp an keiner anderen Stelle benötigen. Es gibt jedoch Personen, die von dieser Art und Weise generell komplett abraten. Dies ist letztendlich aber auch wieder eine Geschmacksfrage. Das Beispiel von oben würde mit einem anonymen simplen Datentyp wie folgt aussehen:

<xs:element name="arbeitsspeicher">
    <xs:simpleType>
        <xs:restriction base="xs:integer" />
    </xs:simpleType>
</xs:element>

Bei größeren oder komplexeren XML-Skripten kommt es immer wieder vor, dass Sie das gleiche Element mehrmals, jedoch an unterschiedlichen Stellen im XML-Baum, benötigen. Für ein solches Vorhaben dient eine Referenz. Dabei notieren Sie Ihr Element einmal global (also direkt innerhalb des schema-Elements) und können es dann mittels des element-Elements und des ref-Attributs referenzieren. Die Referenzierung des Elements arbeitsspeicher würde wie folgt aussehen:

<xs:element ref="arbeitsspeicher" />

Das element-Element verfügt des Weiteren noch über einige Attribute, mit welchen Einstellungen festgelegt werden können. Die wichtigsten Attribute sind default (Standardwert, falls das Element keinen Wert hat), fixed (Festwert - andere Werte sind nicht erlaubt), minOccurs (minimale Anzahl an Vorkommnissen) und maxOccurs (maximale Anzahl an Vorkommnissen). Der Standardwert für die Attribute minOccurs und maxOccurs ist 1. Für das Attribut maxOccurs kann auch der Wert unbounded verwendet werden, um somit die maximale Anzahl an Elementen nicht zu begrenzen.

<xs:element name="festplatte" type="speicher" maxOccurs="6" />

Als Liste bezeichnet man einen speziellen Datentyp, dessen Wert aus mehreren Werten getrennt durch ein Leerzeichen bestehen. Um eine Liste zu definieren, benötigen Sie das Element list, welches einem simpleType-Element untergeordnet wird. Über das Attribut itemType wird der Datentyp der einzelnen Werte (auch als Item bezeichnet) festgelegt.

<xs:element name="zahlen">
    <xs:simpleType>
        <xs:list itemType="xs:integer" />
    </xs:simpleType>
</xs:element>

Übrigens: An Stelle des Attributs itemType kann dem list-Element auch ein simpleType-Element (anonymer Datentyp) untergeordnet werden.


Ein weiterer simpler Typ ist die Vereinigung (engl. union). Bei der Vereinigung werden zwei oder mehrere Datentypen miteinander verbunden, d. h. der Wert, der diesen Datentyp verwendet, darf einen Wert annehmen, der zu einem der angegebenen Datentypen der Vereinigung gehört. Um die Vereinigung zu deklarieren, wird das union-Element verwendet. Die Datentypen werden durch Leerzeichen getrennt im Attribut memberTypes angegeben.

<xs:element name="zeitangabe">
    <xs:simpleType>
        <xs:union memberTypes="xs:date xs:dateTime" />
    </xs:simpleType>
</xs:element>

Übrigens: Sie können an Stelle des memberTypes-Attributs auch simpleType-Elemente innerhalb des union-Elements notieren.

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen OK