Erweiterung von Typen
XML Schema erlaubt eine Erweiterung einer Typdefinition um Attribute und um Elemente im Inhaltsmodell. Im Inhaltsmodell kann allerdings immer nur hinten angefügt werden (dies impliziert eine sequence). In der folgenden Erweiterung werden die neuen Kindelemente Fähigkeit und Berufsklasse also hinter allen Kindelementen von Person_T angesiedelt:
<xs:complexType name="Freiwilliger_T">
<xs:complexContent>
<xs:extension base="Person_T">
<xs:sequence>
<xs:element name="Fähigkeit" type="xs:string"/>
<xs:element name="Berufsklasse" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Die Gültigkeit bezüglich des Ursprungstyps ist für Werte des erweiterten Typs nicht gefordert. Die Erweiterung stellt also kein symmetrisches Konzept zur Einschränkung dar.
Die bisher gezeigten Typdefinitionen erzeugen benannte Typen. Solche Typdefinitionen dürfen in einem XML Schema nur auf der ersten Hierarchiestufe stehen (als Kind des xs:schema-Elementes in einem XML Schema). Wie alle Definitionen auf dieser Stufe sind sie global, können also aus anderen Definitionen referenziert werden. Analog zu den Typen können Elemente und Attribute global definiert werden. Folgende Definition erzeugt, wenn sie auf der ersten Hierarchiestufe steht, ein globales Element vom Typ Operation_T:
<xs:element name="Operation" type="Operation_T"/>
Das Element könnte statt der Verwendung eines global definierten Typs auch einen lokalen anonymen Typ definieren, wie in folgender Definition:
<xs:element name="Bett">
<xs:complexType>
<xs:attribute name="ID" type="xs:ID" use="required"/>
<xs:attribute name="Zimmernummer" type="Zimmernummer_T"/>
</xs:complexType>
</xs:element>
Ein solcher anonymer Typ kann dann allerdings nicht von einer anderen Elementdefinition wiederverwendet werden.
Quelle: "XQuery – Grundlagen und fortgeschrittene Methoden", dpunkt-Verlag, Heidelberg (2004)
<< zurück | vor >> |