geoinformation iii
DESCRIPTION
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: - PowerPoint PPT PresentationTRANSCRIPT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
Geoinformation III
XML-Schema
Vorlesung 13a
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
1
Übersicht über den dritten Vorlesungsblock
1. Offene Systeme, Rechnernetze und das Internet
Die eXtensible Markup Language XML
2. Grundlagen, Namensräume & Hyperlinks
3. XML Schema
4. Von UML nach XML
Die Geography Markup Language GML:
5. Grundlagen, Repräsentation räumlicher und nichträumlicher Objekte
6. Geometrie und Topologie
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
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
9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
Möglichkeiten von XML-Schema
<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>
Namensraumdeklaration für XML-Schema
Namensraumdeklaration für XML-Schema
Element-Deklaration
Element-Deklaration
Attribut-Deklaration
Attribut-Deklaration
TypdefinitionenTypdefinitionen
Beispiel: <datum jahr=“1979“/>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
4
• 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/
XML-Schema
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
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“/>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
8
Elementkardinalitäten
• 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>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
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
9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
12
Beispiel: benannte/unbenannte Typen
A 2x
<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>
benannter Typ (global)
benannter Typ (global)
unbenannter Typ (innerhalb einer
Attributdeklaration)
unbenannter Typ (innerhalb einer
Attributdeklaration)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
13
Einfache Datentypen (Simple Types)
• Dienen zur Definition der Wertebereiche von Elementen und Attributen
<xsd:element name=“name“ type=“xsd:string“/><xsd:element name=“schuhgroesse“ type=“xsd:positiveInteger“/><xsd:element name=“geburtsdatum“ type=“xsd:date“/>
Beispiele für Elementdeklarationen mit Simple Types:
<person> <name>Carl Friedrich Gauß</name> <schuhgroesse>42<schuhgroesse/> <geburtsdatum>1777-04-30<geburtsdatum/></person>
Verwendung in einer XML-Datei in einem Element „person“:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
14
Simple Types – Auswahl (I)
Simple Type Beispiel(e)
string GIS ist tollbyte -1, 126unsignedByte 0, 126hexBinary 0FB7integer -126789, -1, 0, 1, 126789positiveInteger 1, 126789negativeInteger -126789, -1nonNegativeInteger 0, 1, 126789int -1, 126789675unsignedInt 0, 1267896754long -1, 12678967543233unsignedLong 0, 12678967543233short -1, 12678decimal 0, 12678boolean true, false, 1, 0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
15
Simple Types – Auswahl (II)
Simple Type Beispiel(e) Kommentare
float -INF, -1E4, -0, 0, 12.78E-2, 12 32-bit, einfache Genauigkeitdouble -INF, -1E4, -0, 0, 12.78E-2, 12 64-bit, doppelte Genauigkeittime 13:20:00.000date 2003-02-03 3. Februar 2003duration P1Y2M3DT10H30M12.3s 1 Jahr, 2 Monate, 3 Tage,
10 Std., 30 Min., 12.3 Sek.gMonthDay --02-03 jeden 3. FebruargYear 2003 2003Name shipTo XML 1.0 NameQname po:US-Adresse NXML Namensraum QnameNCName USAdresse unqualifizierter NameanyURI http://www.ikg.uni-bonn.deID XML 1.0 ID Attribut-TypIDREF XML 1.0 IDREF Attribut-TypENTITY XML 1.0 ENTITY Attribut-TypNOTATION XML 1.0 NOTATION Attribut-TypNMTOKEN XML 1.0 NMTOKEN Attribut-Typ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
16
Hierarchie der Simple Types
A 2x
Ur-Typbuilt-in primitive Typen
AnySimpleType
duration dateTime time date gYearMonth gYear gMonthDay gDay gMonth
boolean base64BinaryhexBinary float
string decimal
double anyURI QName NOTATION
normalizedString integer
nonPositiveInteger nonNegativeIntegerlong
negativeInteger positiveIntegerlanguage Name NMTOKEN
NCName NMTOKENS
IDREFID
IDREFS
ENTITY
ENTITIES
int unsignedLong
short
byte
unsignedInt
unsignedShort
unsignedByte
built-in abgeleitete Typen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
17
• Facetten definieren Einschränkungen von Wertebereichen für Simple Types.
• Typdefinition durch Restriktion eines vorhandenen Simple Types:
Einschränkung durch Facetten
<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
length pattern
minLength maxLength
whitespace enumeration
maxExclusive minExclusive
minInclusive maxInclusive
totalDigits fractionDigits
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
18
Beispiele für Restriktionen
A 4x
<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
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
Einschränkung von string auf explizit spezifizierte Zeichenketten
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
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>
<eineIntegerListe> 1 5 89 3048 -6784375 </eineIntegerListe>
Beispiel für ein Element vom Typ <meineZahlenliste> :
Definition eines Listentyps
Definition eines Listentyps
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
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
<meineVornamen> Carl Friedrich Albert </meineVornamen>
<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: