4.2.2.3 Definition von Typen
Jedem Element und Attribut werden Typen zugeordnet. In der XSD gibt es einfache („simpleType“) und komplexe(„complexType“) Typen.
Einfache Typen “simpleType”:
Der „simpleType“ definiert einen einfachen Typ, welcher bereits vordefinierte Typen, wie z.B. xsd:string, xsd:int etc. enthält.
Es ist auch möglich, eigene einfache Typen zu schaffen, allerdings müssen diese auf einfachen, schon vordefinierten Typen bestehen und diese einschränken.
In dem Falle haben wir einen einfachen Typ namens „waehrung“ geschaffen, welcher über xsd:restriction Beschränkungen enthält, allerdings basiert („base“) dieser Typ „waehrung“ auf den vordefinierten Typ „xsd:string“, wobei dann durch so genannte Facetten die Beschränkung erfolgt.
Komplexe Typen “complexType”:
Komplexe Datentypen erlauben in XML die Kindelemente eines Elementes zu beschreiben.
Hiermit weise ich dem Element „Name“ den Typ „Name“ zu. Da es diesen Datentyp noch nicht gibt, muss er erst beschrieben werden, welche Elemente er enthält.
Das hier angegebene Beispiel bedeutet, dass das Element „Name“, 2 Kindelemente hat.
Einfacher Inhalt “simpleContent”:
Der „simpleContent“ definiert einen einfachen Inhalt, was bedeutet, dass er nur Text enthalten darf.
Komplexer Inhalt “complexContent”:
Der „complexContent“ definiert einen komplexen Inhalt, was bedeutet, dass er Text, Attribute und andere Elemente enthalten darf.
4.2.2.4 Definition des Inhaltes
4.2.2.4.1 Sequenz
Merkmale:
- Elemente müssen der Reihe nach vorkommen.
- Falls keine anderen Werte angegeben werden, können Elemente 0 oder mehrfach vorkommen.
4.2.2.4.2 Choice
Merkmale:
- Aus einer Anzahl von Elementen darf, falls kein anderer Wert über Max/MinOccurs gesetzt, ein Element vorkommen. Ansonsten auch mehrere möglich.
- Reihenfolge beliebig.
- Durch das MaxOccurs ist es möglich zu sagen, dass Elemente mehrfach und die Reihenfolge beliebig ist
4.2.2.4.3 All
Merkmale:
- Jedes Element darf einmal vorkommen.
- Reihenfolge spielt keine Rolle.
4.2.2.4.4 Group
Merkmale:
- Gruppiert eine Reihe von Elementen oder Anweisungen.
4.2.2.4.5 Any
Merkmale:
- Erlaubt beliebigen Datentyp
4.2.2.4.6 Extensions
Extension bedeutet auf Deutsch Ableitung. Das Prinzip was dahinter steckt, ist bereits aus der Programmierung bekannt – Stichwort lautet Vererbung.
Ableitungen von Elementtypen sind dann interessant, wenn man manche Elemente spezialisieren möchte. Man spart sich dadurch eine Menge Tipparbeit und man kann einfach andere Kindelemente an das Elternelement dranhängen. Als Beispiel möchte ich hier die Einkaufsliste erweitern.
4.2.2.4.7 Restrictions
Man kann auch einen neuen Elementtypen erzeugen, indem man einen bereits vorhandenen Elementtyp beschränkt. Dafür müssen alle Elemente aufgezählt werden und dabei kann man beliebig die Beschränkungen verteilen.
Als Beispiel möchte ich mein Anschriftsschema von oben verwenden.
Bei dem Beispiel muss immer ein Element “name” vorkommen.
Liste der Einschränkungen, auch Facetten genannten, durch welche man einfache Beschränkungen realisieren kann:
- length, maxLength, minLength – Länge eines Strings
- enumeration – Auswahl
- pattern – Reguläre Ausdrücke
- minExclusiv, maxExclusiv, minInclusiv, maxInclusiv – Wertebereicheinschränkung
- totalDigits, fractionDigits – Einschränkung der Dezimalstelle (Gesamtzahl, Nachkommastelle)
- whiteSpace – Behandlung von Tabs und Leerzeichen
4.2.2.4.8 List
In einem XML Element können durch den Typ Liste mehrere “pseudo”-Elemente drin stehen. Die Elemente müssen allerdings alle vom selben Typ sein.
4.2.2.4.9 Union
Die Union bietet in der XSD die Möglichkeit einem Element mehrere Typen zu geben, sodass man ähnlich zur Liste, mehrere „pseudo“ Elemente in einem Tag hat.
Syntax: <xsd:union memberTypes=“Typen“ />
4.2.2.4.10 AnyAttribute
Erlaubt beliebige Attribute innerhalb von Elementen.
4.2.2.4.11 AttributeGroup
Gruppiert Attribute, sodass ein einfacher Zugriff auf diese möglich ist.