Download - Geoinformation III
![Page 1: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/1.jpg)
Institut für Kartographie und Geoinformation
Prof. Dr. Lutz Plümer Dr. Thomas H. Kolbe
Geoinformation III
XML-SchemaUML XML-Schema
Vorlesung 14
![Page 2: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/2.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
2
Übersicht über den dritten Vorlesungsblock
1. Offene Systeme, Rechnernetze und das Internet
Die eXtensible Markup Language XML
2. Grundlagen, Document Type Definitions (DTDs)
3. Fortsetzung DTDs, UML DTD, Namensräume
4. XML Schema
5. Geographic Markup Language GML:– der vom OpenGIS-Consortium als XML-Anwendung
definierte Standard für Geo-Objekte
![Page 3: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/3.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
3
Motivation: Unzulänglichkeiten von DTDs
<!ELEMENT datum EMPTY><!ATTLIST datum
monat (Januar|Februar|März|April) #REQUIRED tag (1|2|3|4|5|6|7|8|9|10) #REQUIRED jahr (1979|1980|1981|1982|1983) #REQUIRED>
Beispiel einer DTD für ein Element “datum“ (siehe letzte VL):
<datum monat=“März“ tag=“2“ jahr=“1979“/>
<datum monat=“März“ tag=“2“ jahr=“1978“/> f
![Page 4: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/4.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
4
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
![Page 5: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/5.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
5
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/
![Page 6: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/6.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
6
Vergleich DTDs und XML-Schema
DTDs XML-Schema
• spezielle Syntax • XML-Syntax• sehr beschränkte Datentypen (nur für Attributwerte, nicht für Elementinhalt)
• reichhaltige Datentypen: diverse Zahlen, Boolean, Datum, Zeit, URIs...
• keine Unterstützung von Namensräumen
• Namensräume werden unterstützt
• Asymmetrien zwischen Element- und Attributtypen
• Polymorphie (Substituierbarkeit) von Typen
• Constraints (Schlüssel) nur mit ID und IDREF, eingeschränkter Typ (nur NAME)
• allgemeine Schlüssel- und Fremdschlüsselbedingungen
• Erweiterung von Typen nur umständlich über Parameter Entities
• Typen durch Benutzer definierbar
• keine Vererbung • Vererbung• verteilte Schemata
![Page 7: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/7.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
7
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
![Page 8: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/8.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
8
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“/>
![Page 9: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/9.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
9
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>
![Page 10: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/10.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
10
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
![Page 11: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/11.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
11
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
![Page 12: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/12.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
12
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
![Page 13: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/13.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
13
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>
benannter Typ (global)
benannter Typ (global)
unbenannter Typ (innerhalb einer
Attributdeklaration)
unbenannter Typ (innerhalb einer
Attributdeklaration)
![Page 14: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/14.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
14
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“:
![Page 15: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/15.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
15
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
![Page 16: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/16.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
16
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, dppelte 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
![Page 17: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/17.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
17
Hierarchie der Simple Types
Ur-Typbuilt-in primitive Typen
AnySimpleType
duration dateTime time date gYearMonth gYear gMonthDay gDay gMonth
boolean base64Binary hexBinary 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
![Page 18: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/18.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
18
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> length pattern
minLength maxLength
whitespace enumeration
maxExclusive minExclusive
minInclusive maxInclusive
totalDigits fractionDigits
• XML-Schema kennt 12 Facetten:
- nicht alle Facetten sind für alle Typen sinnvoll
![Page 19: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/19.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
19
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
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
![Page 20: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/20.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
20
Listentypen (I)
• Liste von Werten, getrennt durch ein XML Whitespace (Leerzeichen, Tabulator, Zeilenende)
– bereits bekannt durch die Attributtypen IDREFS, NMTOKENS und ENTITIES aus den DTDs
• diese Typen sind auch in XML-Schema vordefiniert
– 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
![Page 21: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/21.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
21
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>, nachdem1. “Carl Friedrich“ und 2. “Albert“ in die Liste eingefügt wurden:
![Page 22: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/22.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
22
Vereinigungstypen (Union Types)
• Vereinigung mehrerer Simple Types
• Elemente bzw. Attribute eines V.-typen dürfen Werte aus einem der Wertebereiche der angegebenen Typen haben
• zulässig sind:– atomare Typen– Listentypen– Vereinigungstypen
<xsd:simpleType name=“monatsangabe“> <xsd:union memberTypes=“meinMonatsTyp xsd:positiveInteger“/></xsd:simpleType>
<monat>Februar</monat><monat>2</monat><monat>April</monat>
Beispiel für ein Elemente vom Typ <monatsangabe> :
![Page 23: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/23.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
23
Complex Types (I)
• Benannte komplexe Typen (Named Complex Types)– global definiert
– können wiederverwendet werden
– Bezeichnung muss ein XML-Name sein
• Unbenannte komplexe Typen (Anonymous Complex Types)– sind nur innerhalb einer Element-Deklaration definiert
– können nie eingeschränkt, erweitert oder redefiniert werden
• Inhalt von komplexen Typen:– einfacher Inhalt (simpleContent)
– komplexer Inhalt (complexContent)
• nur Elemente (element-only content)
• gemischter Inhalt (mixed content)
• leer (empty content)
![Page 24: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/24.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
24
Komplexe Inhalte (Content Models)
• <sequence> . . . </sequence>– alle darin deklarierten Elemente müssen in genau dieser
Reihenfolge im Instanzendokument vorkommen
• <choice> . . . </choice>– genau eines der darin deklarierten Elemente muss im
Instanzendokument vorkommen
• <group> . . . </group>– Gruppiert Deklarationen, die dann über ihren Namen in das
Content Model eingefügt werden können
![Page 25: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/25.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
25
Beispiel Complex Types und Content Models
<xsd:complexType name=“personenTyp“> <xsd:sequence> <xsd:element name=“vorname“ type=“xsd:string“/> <xsd:element name=“name“ type=“xsd:string“/> <xsd:element name=“telefonnummer“> <xsd:complexType> <xsd:choice> <xsd:element name=“telnummerPrivat“ type=“xsd:string“/> <xsd:element name=“telnummerJob“ type=“xsd:string“/> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name=“geburtsdatum“ type=“xsd:date“/> </xsd:complexType>
![Page 26: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/26.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
26
Verteilte Schemata
• Schemadefinitionen können über mehrere Dokumente verteilt sein Modularisierung, Wiederverwendbarkeit Übersichtlichkeit
• ein Schema wird mittels des <include>-Tags in ein anderes Schema eingebettet:
<include schemaLocation = “http://www.beispiele.de/verteiltes_schema.xsd“/>
• das eingefügte Dokument muss denselben Target Namespace besitzen, d.h. die Definitionen darin werden demselben Namensraum hinzugefügt
• weiterer Möglichkeit mittels <import>, das auch die Verwendung mehrerer Target Namespaces erlaubt
![Page 27: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/27.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
27
Vererbung
Attribute von Oberklassen müssen ausdrücklich noch einmal deklariert werden:
<!ELEMENT Person (Name,Vorname)><!ELEMENT Student (Name,Vorname, Matrikelnummer)>
Person
Name Vorname
Student
Matrikelnummer
Eine Vererbung, wie sie bei UML möglich ist, kann in XML nur manuell nachgebildet werden.
Attribute von Student:
Name geerbt vonVorname PersonMatrikelnummer
}
![Page 28: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/28.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
28
Ableitung von Typen durch Erweiterung (I)
<schema targetNamespace=“http://www.personenregister.de/Personen“ xmlns=“http://www.w3.org/2001/XMLSchema“ xmlns:pers=“http://www.personenregister.de/Personen“>
<complexType name=“personTyp“> <sequence> <element name=“name“ type=“string“/> <element name=“vorname“ type=“string“/> </sequence> </complexType>
<complexType name=“studentTyp“> <complexContent> <extension base=“pers:personTyp“ <sequence> <element name=“matrikelnr“ type=“positiveInteger“/> </sequence> </extension> </complexContent> </complexType></schema>
![Page 29: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/29.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
29
Ableitung von Typen durch Erweiterung (II)
<?xml version=“1.0“><studentenliste xmlns=“http://www.personenregister.de/Personen“> <student> <name>Zupp</name> <vorname>Jupp</vorname> <matrikelnr>123456789</matrikelnr> </student></studentenliste>
Beispiel für ein Instanzdokument mit einer Liste von Studenten:
student erbt die Elemente “name“
und “vorname“ von “person“
student erbt die Elemente “name“
und “vorname“ von “person“
Erweiterung von “person“ durch eine Matrikelnummer
Erweiterung von “person“ durch eine Matrikelnummer
![Page 30: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/30.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
30
Äquivalenzklassen (substitution groups)
• Deklaration einer Gruppe austauschbarer Elemente– Elemente der substitution group müssen global deklariert
werden – jedes Element dieser Gruppe kann im Instanzdokument
ersetzt werden– jedes Element der substitution group muss vom selben
Typ sein wie das zu substituierende Element oder von dessen Typ abgeleitet werden
<element name=“student“ type=“studentTyp“ substitutionGroup=“pers:person“/><element name=“professor“ type=“professorTyp“ substitutionGroup=“pers:person“/>
<pers:student>Jupp Zupp</pers:student><pers:professor>Carl Friedrich Gauß</pers:professor>
Dürfen dort verwendet werden, wo eigentlich ein Element <pers:person> erwartet wird
Dürfen dort verwendet werden, wo eigentlich ein Element <pers:person> erwartet wird
![Page 31: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/31.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
31
Abstrakte Elemente und Typen
• Dienen zur Repräsentation übergeordneter abstrakter Konzepte• Elemente mit abstrakten Typen dürfen im Instanzdokument nicht
verwendet werden, nur Mitglied(er) der substitution group
<schema xmlns=“http://www.w3c.org/2001/XML-Schema“ targetNamespace=“http://personen.abstraktebeispiele.de/schema“ xmlns:pers=“http://personen.abstraktebeispiele.de/schema“
<complexType name=“personTyp“ abstract=“true“> ... </complexType>
<complexType name=“studentTyp“> <complexContent> <extension base=“pers:personTyp“/> ... </complexContent> </complexType>
<element name=“person“ type=“pers:personTyp“/> <element name=“student“ type=“pers:studentTyp“/></schema>
“personTyp“ wird als abstrakter Typ definiert.
“personTyp“ wird als abstrakter Typ definiert.
Element “person“ darf nicht im Instanzdokument vorkommen; wohl aber “student“, weil es auf dem abgeleiteten Typ “studentTyp“ basiert.
Element “person“ darf nicht im Instanzdokument vorkommen; wohl aber “student“, weil es auf dem abgeleiteten Typ “studentTyp“ basiert.
“studentTyp“ wird von “personTyp“ abgeleitet (und ist nicht abstrakt).
“studentTyp“ wird von “personTyp“ abgeleitet (und ist nicht abstrakt).
![Page 32: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/32.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
32
<xsd:element name=“Landkarte“> <xsd:complexType> <xsd:sequence> <xsd:element name=“Polygon“ minOccurs=“1“> <xsd:complexType> <xsd:sequence> <xsd:element name=“Linie“ minOccurs=“3“> <xsd:complexType> <xsd:sequence> <xsd:element name=“Knoten“ minOccurs=“2“ maxOccurs=“2“> <xsd:complexType> <xsd:attribut name=“xKoord“ type=“xsd:float“/> <xsd:attribut name=“yKoord“ type=“xsd:float“/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:sequence> </xsd:complexType> </xsd:sequence> </xsd:complexType></xsd:element>
XML-Schema und UML- Beispiele -
![Page 33: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/33.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
33
Beispiel Landkarten: 1. Möglichkeit (I)
Landkarte
Polygon Linie Knoten
1..*
3..* 2
<!ELEMENT Landkarte (Polygon+)><!ELEMENT Polygon (Linie, Linie, Linie+)><!ELEMENT Linie (Knoten, Knoten)><!ELEMENT Knoten (EMPTY)>
<!ATTLIST Knoten xKoord CDATA #REQUIREDyKoord CDATA #REQUIRED>
2..*2
<xsd:element name = “Landkarte“> <xsd:complexType> <xsd:sequence> <xsd:element name=“Polygon“ minOccurs=“1“> <xsd:complexType> <xsd:sequence> <xsd:element name=“Linie“ minOccurs=“3“> <xsd:complexType> <xsd:sequence> <xsd:element name=“Knoten“ minOccurs=“2“ maxOccurs=“2“> <xsd:complexType> <xsd:attribut name=“xKoord“ type=“xsd:float“ use=“required“/> <xsd:attribut name=“yKoord“ type=“xsd:float“ use=“required“/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:sequence> </xsd:complexType> </xsd:sequence> </xsd:complexType></xsd:element>
![Page 34: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/34.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
34
<xsd:element name=“Landkarte“> <xsd:complexType> <xsd:sequence> <xsd:element name=“Polygon“ minOccurs=“1“> <xsd:complexType> <xsd:sequence> <xsd:element name=“Linie“ minOccurs=“3“> <xsd:complexType> <xsd:sequence> <xsd:element name=“Knoten“ minOccurs=“2“ maxOccurs=“2“> <xsd:complexType> <xsd:attribut name=“xKoord“ type=“xsd:float“ use=“required“/> <xsd:attribut name=“yKoord“ type=“xsd:float“ use=“required“/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:sequence> </xsd:complexType> </xsd:sequence> </xsd:complexType></xsd:element>
Beispiel Landkarten: 1. Möglichkeit (II)
use=“required“ bedeutet, dass das Attribut im Instanzdokument angegeben werden muss.
use=“required“ bedeutet, dass das Attribut im Instanzdokument angegeben werden muss.
![Page 35: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/35.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
35
<xsd:element name = “Landkarte“> <xsd:complexType> <xsd:sequence> <xsd:element name=“Polygon“ minOccurs=“1“> <xsd:complexType> <xsd:sequence> <xsd:element name=“Linie“ minOccurs=“3“> <xsd:complexType> <xsd:sequence> <xsd:element name=“Knoten“ minOccurs=“2“ maxOccurs=“2“> <xsd:complexType> <xsd:attribut name=“xKoord“ type=“xsd:float“ use=“required“/> <xsd:attribut name=“yKoord“ type=“xsd:float“ use=“required“/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:sequence> </xsd:complexType> </xsd:sequence> </xsd:complexType></xsd:element>
Instanzdokument:
<Landkarte><Polygon><Linie><Knoten xKoord=“100“ yKoord=“100“ /><Knoten xKoord=“200“ yKoord=“100“ /></Linie> <Linie><Knoten xKoord=“200“ yKoord=“100“ /><Knoten xKoord=“150“ yKoord=“200“ /></Linie><Linie><Knoten xKoord=“100“ yKoord=“100“ /><Knoten xKoord=“150“ yKoord=“200“ /></Linie></Polygon></Landkarte>
Instanzdokument:
<Landkarte><Polygon><Linie><Knoten xKoord=“100“ yKoord=“100“ /><Knoten xKoord=“200“ yKoord=“100“ /></Linie> <Linie><Knoten xKoord=“200“ yKoord=“100“ /><Knoten xKoord=“150“ yKoord=“200“ /></Linie><Linie><Knoten xKoord=“100“ yKoord=“100“ /><Knoten xKoord=“150“ yKoord=“200“ /></Linie></Polygon></Landkarte>
150, 200
200, 100100, 100
![Page 36: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/36.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
36
Beispiel Landkarten: 2. Möglichkeit (I)
Landkarte
Polygon Linie Knoten
1..* 3..* 3..*
<!ELEMENT Landkarte (Polygon+,(Linie, Linie, Linie+),(Knoten, Knoten, Knoten+))>
<!ELEMENT Polygon EMPTY>
<!ELEMENT Linie EMPTY>
<!ELEMENT Knoten EMPTY>
3..* 22..*2
![Page 37: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/37.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
37
Beispiel Landkarten: 2. Möglichkeit (II)<!ELEMENT Landkarte (Polygon+,(Linie,Linie, Linie+),(Knoten, Knoten, Knoten+))>
<!ELEMENT Polygon EMPTY>
<!ELEMENT Linie EMPTY>
<!ELEMENT Knoten EMPTY>
<!ATTLIST Landkarte Polygon_IDs IDREFS #REQUIRED>
<!ATTLIST Polygon Polygon_ID ID #REQUIRED
Linien_IDs IDREFS #REQUIRED>
<!ATTLIST Linie Linien_ID ID #REQUIRED
Knoten_IDs IDREFS #REQUIRED>
<!ATTLIST Knoten Knoten_ID ID #REQUIRED
xKoord CDATA #REQUIRED
yKoord CDATA #REQUIRED>
<schema xmlns=“http://www.w3c.org/2001/XML-Schema“ targetNamespace=“http://landkarten.beispiele.de/schema“ xmlns:lk=“http://landkarten.beispiele.de/schema“>
<element name=“landkarte“ type=“lk:landkartenTyp“/>
<element name=“polygon“ type=“lk:polygonTyp“/><element name=“linie“ type=“lk:linienTyp“/><element name=“knoten“ type=“lk:knotenTyp“/>
<complexType name=“landkartenTyp“> <sequence> <element ref=“lk:polygon“ minOccurs=“1“/> <element ref=“lk:linie“ minOccurs=“3“/> <element ref=“lk:knoten“ minOccurs=“3“/> </sequence></complexType> ...
![Page 38: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/38.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
38
Beispiel Landkarten: 2. Möglichkeit (III)
... <complexType name=“polygontyp“> <attribut name=“polygon_ID“ type=“ID“ use=“required“/> <attribut name=“linien_IDs“ type=“IDREFS“ use=“required“/> </complexType>
<complexType name=“linientyp“> <attribut name=“linien_ID“ type=“ID“ use=“required“/> <attribut name=“knoten_IDs“ type=“IDREFS“ use=“required“/> </complexType>
<complexType name=“knotentyp“> <attribut name=“knoten_ID“ type=“ID“ use=“required“/> <attribut name=“xKoord“ type=“float“ use=“required“/> <attribut name=“yKoord“ type=“float“ use=“required“/> </complexType>
</schema>
![Page 39: Geoinformation III](https://reader034.vdokument.com/reader034/viewer/2022051215/568145ab550346895db2a2c3/html5/thumbnails/39.jpg)
Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
39
Beispiel Landkarten: 2. Möglichkeit (III)
Instanzdokument:
<Landkarte Polygon_IDs=“P1 P2“><Polygon Polygon_ID=“P1“ Linien_IDs=“L1 L3 L7“ /><Polygon Polygon_ID=“P2“ Linien_IDs=“L3 L5 L6“ /><Linie Linien_ID=“L1“ Knoten_IDs=“P3 P7“ /><Linie Linien_ID=“L3“ Knoten_IDs=“P7 P9“ /><Linie Linien_ID=“L5“ Knoten_IDs=“P4 P7“ /><Linie Linien_ID=“L6“ Knoten_IDs=“P4 P9“ /><Linie Linien_ID=“L7“ Knoten_IDs=“P9 P3“ /><Knoten Knoten_ID=“P3“ xKoord=“100“ yKoord=“100“ /><Knoten Knoten_ID=“P4“ xKoord=“250“ yKoord=“200“ /><Knoten Knoten_ID=“P7“ xKoord=“200“ yKoord=“100“ /><Knoten Knoten_ID=“P9“ xKoord=“150“ yKoord=“200“ />
</Landkarte>
P9
P4
P7
P3
L7
L1
L6
L5
L3