XML-Know How

Festlegung des Vorkommens, der Häufigkeit und der Reihenfolge von Elementen

Angaben zum Vorkommen eines Elements und dessen Häufigkeit beschränken sich in DTDs auf die Kombination der Möglichkeiten »obligatorisch« oder »fakultativ« sowie »einmalig« oder »beliebig oft«.

Die Angabe der Element-Reihenfolge ist nur durch die beiden Konnektoren »,« für Und und »|« für Oder möglich. Elemente können daher entweder einander folgen oder Alternativen darstellen.

Komplexe Konstruktionen sind durch die Kombination von Konnektoren und Häufigkeitsangaben in Klammerkonstruktionen möglich.

Hier bietet XSD mehr Möglichlichkeiten. Über zwei Attribute von <xs:element>, minOccurs und maxOccurs, kann die gewünschte minimale und maximale Häufigkeit des deklarierten Elements genau angegeben werden. Der Attribut-Wert kann dabei eine ganze Zahl von 0 an aufwärts sein, unbegrenzte Häufigkeit wird durch »unbounded« angegeben.

Im folgenden Beispiel wird ein Element <beispiel> deklariert, das beliebigen Text enthalten darf und mindestens einmal aber maximal dreimal auftreten kann.

<xs:element name="beispiel" type="xs:string" minOccurs="1" maxOccurs="3"/>

In unseren Beispielen wurde die Reihenfolge von Elementen in ihrem Container bisher stets mit <xs:sequence> angegeben. <xs:sequence> legt fest, dass die innerhalb dieses Elements deklarierten Elemente genau in der Reihenfolge ihrer Deklarationen auch im XML-Dokument erscheinen müssen. Es entspricht also dem DTD-Konnektor »,« (AND).

Zwei weitere XSD-Elemente können an Stelle von <xs:sequence> stehen, nämlich <xs:choice>, was dem DTD-Konnektor »|« (OR) und <xs:all>, was dem SGML-DTD-Konnektor »&« gleichkommt (ALL; alle Elemente müssen vorkommen, die Reihenfolge ist beliebig).

Durch Schachtelung dieser drei XSD-Elemente in Kombination mit den Häufigkeitsangaben können auch sehr komplexe Konstruktionen erzeugt werden.