210 likes | 324 Views
Geoinformation III. Vorlesung 13a. XML-Schema. 1. Übersicht über den dritten Vorlesungsblock. 1. Offene Systeme, Rechnernetze und das Internet Die e X tensible M arkup L anguage XML 2. Grundlagen, Namensräume & Hyperlinks XML Schema Von UML nach XML Die Geography Markup Language GML:
E N D
Geoinformation III Vorlesung 13a XML-Schema
1 Übersicht über den dritten Vorlesungsblock • 1. Offene Systeme, Rechnernetze und das Internet • Die eXtensible Markup Language XML • 2. Grundlagen, Namensräume & Hyperlinks • XML Schema • Von UML nach XML • Die Geography Markup Language GML: • Grundlagen, Repräsentation räumlicher und nichträumlicher Objekte • Geometrie und Topologie
Definition der Struktur von Dokumenten • wohlgeformte Dokumente können zwar von jedem XML-Parser eingelesen werden, jedoch sagt die Wohlgeformtheit nichts darüber aus • welche Elementnamen überhaupt vorkommen dürfen, • in welcher Reihenfolge die Elemente im XML-Dokument erscheinen müssen, • welches Element Kindelement eines anderen sein darf • wie oft die Elemente im XML-Dokument erscheinen dürfen, • welche Attribute in bestimmten Elementen verwendet werden dürfen • Zwei Möglichkeiten zur Strukturfestlegung in XML • Document Type Definition (DTD) - beschränkte Möglichkeiten • Aktuell: XML Schema
9 Validierung von XML-Dokumenten • Wohlgeformtheit ist grundsätzliche Voraussetzung für die maschinelle Lesbarkeit von XML-Dokumenten • Wohlgeformtheit sagt nichts darüber aus, ob die Dokumente in ihrer Struktur und den enthaltenen Daten den Anforderungen konkreter XML-Anwendungen entsprechen. • Mit Hilfe von XML-Schema kann bereits der XML-Parser die Struktur und den Inhalt überprüfen, bevor er die Daten an ein Anwendungsprogramm übergibt. • Die Fehlerüberprüfung von XML-Dokumenten wird für Anwendungsprogramme einfacher • Die Überprüfung eines XML-Dokuments erfolgt durch einen validierenden Parser • XML-Dokumente heißen gültig, wenn sie dem Schema entsprechen
Namensraumdeklaration für XML-Schema Element-Deklaration Typdefinitionen Attribut-Deklaration Möglichkeiten von XML-Schema Beispiel: <datum jahr=“1979“/> <xsd:schema xmlns:xsd=“http://www.w3c.org/2001/XMLSchema“> <xsd:element name = “datum“ type= “datumsTyp“/> <xsd:complexType name= “datumsTyp“> <xsd:attribute name = “jahr“> <xsd:simpleType> <xsd:restriction base = “xsd:integer“> <xsd:maxInclusive value = “2500“> <xsd:minInclusive value = “0“> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType>
4 XML-Schema • Unterscheidung von Dokumentenschema und konkreten Ausprägungen, den sog. Instanzdokumenten • XML-Schema ist Datendefinitionssprache zur Festlegung • der Struktur von Instanzdokumenten • des Datentyps jedes einzelnen Elementes/Attributs • Spezifikation von XML-Schema • W3C Recommendation, 2. Mai 2001 • Einführendes Dokument: XML Schema Part 0: Primer • http://www.w3c.org/TR/xmlschema-0/
6 Aufbau eines XML-Schemas • Eine XML-Schema-Datei besteht aus: • Dem Wurzelelement <schema> • mit Angabe eines Target Namespaces, also dem Namensraum, in dem die Definitionen gelten sollen • Darin enthalten sind • Elementdeklarationen • Attributdeklarationen • Typdefinitionen
7 Elementdeklarationen Elemente können auf 3 Arten deklariert werden: • Deklaration durch Angabe eines Datentyps<element name=“Elementname“ type=“Typ“/> • Deklaration durch Definition eines anonymen Typs<element name=“Elementname“>. . .Typdefinition . . .</element> • Deklaration durch Verweis auf ein globales Element<element ref=“globalesElement“/>
Die Anzahl der Vorkommen eines Elements innerhalb eines Instanzdokuments können durch die zwei Attribute • minOccurs (minimale Anzahl) • maxOccurs (maximale Anzahl) • im <element>-Tag festgelegt werden. • Beispiel: • bedeutet, dass zwischen 4 und 6 Elemente vorkommen müssen <element name=“vorstandsmitglied“ minOccurs=4 maxOccurs=6> 8 Elementkardinalitäten
9 Globale Elemente vs. Lokale Elemente • Alle Elemente, die direkt unterhalb des <schema>-Tags deklariert werden, sind globale Elemente • globale Elemente können in Elementdeklarationen mittels des ref-Attributs referenziert werden • globale Elemente können selber keine anderen Elemente referenzieren (dürfen selber kein ref-Attribut besitzen) • globale Elemente müssen unterschiedliche Namen haben • Elemente, die in innerhalb anderer Elemente oder Typdefinitionen deklariert werden sind lokale Elemente • lokale Elemente innerhalb verschiedener Elemente dürfen die gleichen Namen besitzen
10 Datentypen • Simple Types • eingebaute (built-in) atomare Typen (atomic types) • von atomaren Typen abgeleitete Typen • durch Restriktionen • Listentypen (list types) • Vereinigungstypen (union types) • können in Element- und Attributdeklarationen verwendet werden • Complex Types • Zusammengesetzte Typen aus Simple & Complex Types • Vererbung möglich • Verwendung nur in Elementdeklarationen
11 Typdefinitionen • Typen können • unabhängig von Element- und Attributdeklarationen, • aber auch innerhalb von Element- und Attributdeklarationen definiert werden. • Typen werden definiert, Elemente und Attribute deklariert • Typen werden unterschieden in • benannte Typen (Named Types) • besitzen einen Typ-Namen • werden immer global definiert • können und sollen mehrfach benutzt werden • unbenannte Typen (Anonymous Types) • werden ohne Namen (innerhalb von Element- oder Attributdeklarationen) verwendet
benannter Typ (global) unbenannter Typ (innerhalb einer Attributdeklaration) A 12 Beispiel: benannte/unbenannte Typen <xsd:schema xmlns:xsd=“http://www.w3c.org/2001/XMLSchema“> <xsd:element name=“datum“ type=“datumsTyp“/> <xsd:complexType name=“datumsTyp“> <xsd:attribute name=“jahr“> <xsd:simpleType> <xsd:restriction base=“xsd:integer“> <xsd:maxInclusive value=“2500“> <xsd:minInclusive value=“0“> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> 2x
Beispiele für Elementdeklarationen mit Simple Types: <xsd:element name=“name“ type=“xsd:string“/> <xsd:element name=“schuhgroesse“ type=“xsd:positiveInteger“/> <xsd:element name=“geburtsdatum“ type=“xsd:date“/> Verwendung in einer XML-Datei in einem Element „person“: <person> <name>Carl Friedrich Gauß</name> <schuhgroesse>42<schuhgroesse/> <geburtsdatum>1777-04-30<geburtsdatum/> </person> 13 Einfache Datentypen (Simple Types) • Dienen zur Definition der Wertebereiche von Elementen und Attributen
14 Simple Types – Auswahl (I)
15 Simple Types – Auswahl (II)
AnySimpleType duration dateTime time date gYearMonth gYear gMonthDay gDay gMonth boolean base64Binary hexBinary float double anyURI QName NOTATION Ur-Typ built-in primitive Typen string decimal normalizedString integer built-in abgeleitete Typen nonPositiveInteger long nonNegativeInteger language Name NMTOKEN negativeInteger int unsignedLong positiveInteger NCName NMTOKENS short unsignedInt ID IDREF ENTITY byte unsignedShort IDREFS ENTITIES unsignedByte A 16 Hierarchie der Simple Types 2x
17 Einschränkung durch Facetten • Facetten definieren Einschränkungen von Wertebereichen für Simple Types. • Typdefinition durch Restriktion eines vorhandenen Simple Types: • <xsd:simpleType> • <xsd:restriction base=“Basistyp“> • <xsd:Facette value=“Wert“/> • ... • <xsd:Facette value=“Wert“/> • </xsd:restriction> • </xsd:simpleType> • XML-Schema kennt 12 Facetten: • nicht alle Facetten sind für alle Typen sinnvoll
A 18 Beispiele für Restriktionen <xsd:attribute name=“jahr“> <xsd:simpleType> <xsd:restriction base=“xsd:integer“> <xsd:maxInclusive value=“2500“/> <xsd:minInclusive value=“0“/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> Einschränkung von integer auf Wertebereich 0-2500 <xsd:attribute name=“monat“> <xsd:simpleType name=“meinMonatsTyp“> <xsd:restriction base=“xsd:string“> <xsd:enumeration value=“Januar“/> <xsd:enumeration value=“Februar“/> <xsd:enumeration value=“März“/> <xsd:enumeration value=“April“/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> Einschränkung von string auf explizit spezifizierte Zeichenketten 4x
19 Listentypen (I) • Liste von Werten, getrennt durch ein XML Whitespace (Leerzeichen, Tabulator, Zeilenende) • basieren auf atomaren Typen oder Vereinigungstypen • Listen von Listen sind unzulässig! <xsd:simpleType name = “meineZahlenliste“> <xsd:list itemType = “xsd:integer“/> </xsd:simpleType> Definition eines Listentyps Beispiel für ein Element vom Typ <meineZahlenliste> : <eineIntegerListe> 1 5 89 3048 -6784375 </eineIntegerListe>
<meineVornamen> Carl Friedrich Albert </meineVornamen> 20 Listentypen (II) • Listentypen können auch vom Typ string abgeleitet werden • Achtung: • Strings dürfen Whitespaces enthalten • Whitespaces begrenzen Listenelemente • u.U. Probleme bei der Unterscheidung von Listenelementen <xsd:simpleType name = “meineVornamen“> <xsd:list itemType = “xsd:string“/> </xsd:simpleType> Beispiel für ein Element vom Typ <meineVornamen>, nachdem 1. “Carl Friedrich“ und 2. “Albert“ in die Liste eingefügt wurden: