39
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Dr. Thomas H. Kolbe Geoinformation III XML-Schema UML XML-Schema Vorlesung 14

Geoinformation III

  • Upload
    betsy

  • View
    32

  • Download
    0

Embed Size (px)

DESCRIPTION

Geoinformation III. Vorlesung 14. XML-Schema UML  XML-Schema. Übersicht über den dritten Vorlesungsblock. 1. Offene Systeme, Rechnernetze und das Internet Die e X tensible M arkup L anguage XML Grundlagen, Document Type Definitions (DTDs) 3.Fortsetzung DTDs, UML  DTD, Namensräume - PowerPoint PPT Presentation

Citation preview

Page 1: Geoinformation III

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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