![]() |
Lehrer Nussbaumer - XML, XSL et cetera |
|---|
XMLXSLAnwendungenEditorenParser u.a.Schnittstellen----------------- letzte änderung: 09 December 2021 ----------------- Lehrer Nussbaumers Seite ... in Arbeit ... |
XML-SchemaXML-Schemata werden an Stelle einer DTD eingesetzt, um den Aufbau eines XML-Dokuments zu definieren. Anders als bei der DTD legen XML-Schemata zusätzlich Regeln für die Datentypen der einzelnen Elemente und Attribute fest.
Zum Erstellen von Schema-Dateien ist jedenfalls ein XML-Editor zu empfehlen. Wir besprechen die Eigenschaften einer XML-Schema-Datei an Hand des folgenden Beispiels. Sie legt die Struktur für die Beispiel-Datei im Abschnitt "XML-Grundlagen" fest: <?xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
elementFormDefault = "qualified">
<xsd:element name = "schule" id = "schule">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "klasse" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:attribute name = "name" use = "optional" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "klasse" id = "klasse">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "schuelerIn" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:attribute name = "klassenvorstand" use = "optional" type = "xsd:string"/>
<xsd:attribute name = "klassenname" use = "optional" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "vorname" type = "xsd:string" id = "vornam"/>
<xsd:element name = "famname" type = "xsd:string" id = "famnam"/>
<xsd:element name = "schuelerIn" id = "person">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "vorname"/>
<xsd:element ref = "famname"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Wir erkennen:
Einfache DatentypenDie einfachen Datentypen setzen sich aus den so genannten primitiven Datentypen (primitive datatypes), die von XML-Schema vordefiniert sind, und von den davon abgeleiteten Datentypen (derived datatypes) zusammen. Die wichtigsten primitiven Datentypen sind in der folgenden Tabelle zusammengefasst:
Zahlreiche Datentypen werden von den primitiven Datentypen abgeleitet. In der folgenden Tabelle sind einige abgeleitete Datentypen angegeben:
FacettenFacetten legen die Eigenschaften des gewählten Datentyps fest. Für die Praxis spielen etwa die folgenden einschränkenden Facetten eine Rolle, deren Werte vom Benutzer angegeben werden:
Im folgenden Beispiel soll das Element <schuelerzahl> höchstens den Wert 30 annehmen können: <xsd:element name = "schuelerzahl">
<xsd:simpleType>
<xsd:restriction base = "xsd:short">
<xsd:maxInclusive value = "30"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
Zusammengesetzte DatentypenZusammengesetzte Datentypen entstehen, wenn ein Element weitere Elemente oder Attribute beinhaltet. Im folgenden Beispiel wird gezeigt, wie das Element <klasse> weitere Elemente beinhaltet: <xsd:element name = "klasse" id = "klasse">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "schuelerIn" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:attribute name = "klassenvorstand" use = "optional" type = "xsd:string"/>
<xsd:attribute name = "klassenname" use = "optional" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
Möglichkeiten, komplexe Datentypen zu bilden werden im Abschnitt Inhaltsmodell beschrieben. ElementeJedes Element muss mit Hilfe des Schema-Elements <element> deklariert werden: <xsd:element name = "vorname" type = "xsd:string" id = "vornam"/> <xsd:element name = "famname" type = "xsd:string" id = "famnam"/> Die wichtigsten Attribute dabei sind in der folgenden Tabelle angegeben:
AttributeAttribute müssen ebenfalls in der XML-Schema-Datei deklariert werden. Dabei wird das Element, das dieses Attribut enthalten soll, und der Datentyp der Attributwerte festgelegt. Im folgenden Beispiel werden zwei Attribute für das Element <klasse> deklariert: <xsd:element name = "klasse" id = "klasse">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "schuelerIn" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:attribute name = "klassenvorstand" use = "optional" type = "xsd:string"/>
<xsd:attribute name = "klassenname" use = "optional" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
Die Attribute "type" und "name" sind obligat. In der folgenden Tabelle sind diese und einige weitere Attribute zusammengefasst:
InhaltsmodellEinmal deklarierte Elemente können zu benutzerdefinierten Datentypen zusammengesetzt werden. Dies ist mit dem Schema-Element <complexType> mögliche: <xsd:element name = "schuelerIn" id = "person"> <xsd:complexType> <xsd:sequence> <xsd:element ref = "vorname"/> <xsd:element ref = "famname"/> </xsd:sequence> </xsd:complexType> </xsd:element> Das Element <complexType> dient also zur Definition komplexer Datentypen. Da in der Deklaration eines komplexen Datentyps wieder Elemente mit einem zusammengesetzten Datentyp enthalten sein können, kann auf diese Weise die Baumstruktur des XML-Dokumentes gebildet werden. Wir unterscheiden drei Fälle:
Die oben angeführten drei Möglichkeiten können miteinander kombiniert werden. |