DTDs und XSDs verstehen - Teil 2

Auswahl innerhalb einer Gruppe

Innerhalb einer Gruppe gibt es immer eine Auswahl (choice), was bedeutet, dass eines der folgenden Elemente verwendet werden muss. Ein weiteres Element bei der Beschreibung von Dateien sind komplexe Elemente, die wie folgt definiert werden:

<xsd:complexType name="created">
<xsd:sequence>
<xsd:element name="datetime"
type="datetime"/>
</xsd:sequence>
</xsd:complexType>

In diesem einfachen Beispiel wird eine Sequenz verwendet, die wiederum auf ein bestimmtes Element mit einem bestimmten Datentyp verweist. Der spezielle Datentyp created besteht also aus einem Datumseintrag. Die Definition von Datentypen kann aber auch anders aussehen:

<xsd:complexType name="databaseinfo">
<xsd:sequence>
<xsd:element name="datamodified"
type="datamodified" minOccurs="0" maxOccurs="1"/>
<xsd:element name="designmodified"
type="designmodified" minOccurs="0" maxOccurs="1"/>
<xsd:element name="created"
<xsd:element name="modified"
type="modified" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="dbid" type="noteshex"
use="optional"/>
<xsd:attribute name="replicaid"
type="noteshex" use="optional"/>
<xsd:attribute name="odsversion"
type="xsd:integer" use="optional"/>
<xsd:attribute name="diskspace"
type="xsd:integer" use="optional"/>
<xsd:attribute name="numberofdocuments"
type="xsd:integer" use="optional"/>
<xsd:attribute name="percentused"
type="xsd:float" use="optional"/>
</xsd:complexType>

Hier können entweder eine Sequenz aus mehreren Elementen oder (in diesem Fall optionale) Attribute verwendet werden. Bei den Sequenzen sind insbesondere die Festlegungen für das minimale und maximale Auftreten von Bedeutung, mit denen festgelegt wird, ob diese vorkommen müssen oder nicht und ob sie mehrfach vorkommen dürfen. In diesem Fall wird bei maxOccurs der Wert unbounded gesetzt.