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. |