390 likes | 472 Views
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
E N D
Geoinformation III Vorlesung 14 XML-Schema UML XML-Schema
Übersicht über den dritten Vorlesungsblock 1. Offene Systeme, Rechnernetze und das Internet Die eXtensible Markup Language XML • 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 Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
Beispiel einer DTD für ein Element “datum“ (siehe letzte VL): <!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> f Motivation: Unzulänglichkeiten von DTDs <datum monat=“März“ tag=“2“ jahr=“1979“/> <datum monat=“März“ tag=“2“ jahr=“1978“/> Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
Namensraumdeklaration für XML-Schema Element-Deklaration Typdefinitionen Attribut-Deklaration 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> Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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/ Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
Vergleich DTDs und XML-Schema Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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 Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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“/> Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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> Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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 Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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 Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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 Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
benannter Typ (global) unbenannter Typ (innerhalb einer Attributdeklaration) 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> Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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> Einfache Datentypen (Simple Types) • Dienen zur Definition der Wertebereiche von Elementen und Attributen Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
Simple Types – Auswahl (I) Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
Simple Types – Auswahl (II) Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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 built-in abgeleitete Typen normalizedString integer nonPositiveInteger long nonNegativeInteger language Name NMTOKEN negativeInteger int unsignedLong positiveInteger NCName NMTOKENS short unsignedInt ID IDREF ENTITY byte unsignedShort IDREFS ENTITIES unsignedByte Hierarchie der Simple Types Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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 Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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 Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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> Definition eines Listentyps Beispiel für ein Element vom Typ <meineZahlenliste> : <eineIntegerListe> 1 5 89 3048 -6784375 </eineIntegerListe> Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
<meineVornamen> Carl Friedrich Albert </meineVornamen> 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: Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
Beispiel für ein Elemente vom Typ <monatsangabe> : <monat>Februar</monat> <monat>2</monat> <monat>April</monat> 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> Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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) Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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 Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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> Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
ein Schema wird mittels des <include>-Tags in ein anderes Schema eingebettet: <includeschemaLocation = “http://www.beispiele.de/verteiltes_schema.xsd“/> Verteilte Schemata • Schemadefinitionen können über mehrere Dokumente verteilt sein • Modularisierung, Wiederverwendbarkeit • Übersichtlichkeit • 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 Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
Person Name Vorname Student Attribute von Student: Name geerbt von Vorname Person Matrikelnummer Matrikelnummer } Vererbung Eine Vererbung, wie sie bei UML möglich ist, kann in XML nur manuell nachgebildet werden. Attribute von Oberklassen müssen ausdrücklich noch einmal deklariert werden: <!ELEMENT Person (Name,Vorname)> <!ELEMENT Student (Name,Vorname, Matrikelnummer)> Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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> Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
Beispiel für ein Instanzdokument mit einer Liste von Studenten: <?xml version=“1.0“> <studentenliste xmlns=“http://www.personenregister.de/Personen“> <student> <name>Zupp</name> <vorname>Jupp</vorname> <matrikelnr>123456789</matrikelnr> </student> </studentenliste> student erbt die Elemente “name“ und “vorname“ von “person“ Erweiterung von “person“ durch eine Matrikelnummer Ableitung von Typen durch Erweiterung (II) Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
Ä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 Dürfen dort verwendet werden, wo eigentlich ein Element <pers:person> erwartet wird <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> Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
Abstrakte Elemente und Typen “studentTyp“ wird von “personTyp“ abgeleitet (und ist nicht abstrakt). • 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. Element “person“ darf nicht im Instanzdokument vorkommen; wohl aber “student“, weil es auf dem abgeleiteten Typ “studentTyp“ basiert. Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
<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 - Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
<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 (I) Landkarte <!ELEMENT Landkarte (Polygon+)> <!ELEMENT Polygon (Linie, Linie, Linie+)> <!ELEMENT Linie (Knoten, Knoten)> <!ELEMENT Knoten (EMPTY)> <!ATTLIST Knoten xKoord CDATA #REQUIRED yKoord CDATA #REQUIRED> 1..* 2 Polygon 3..* Linie 2..* 2 Knoten Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
Beispiel Landkarten: 1. Möglichkeit (II) <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> use=“required“ bedeutet, dass das Attribut im Instanzdokument angegeben werden muss. Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
<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> 150, 200 100, 100 200, 100 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> Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
Beispiel Landkarten: 2. Möglichkeit (I) <!ELEMENT Landkarte (Polygon+,(Linie, Linie, Linie+),(Knoten, Knoten, Knoten+))> <!ELEMENT Polygon EMPTY> <!ELEMENT Linie EMPTY> <!ELEMENT Knoten EMPTY> Landkarte 1..* 3..* 3..* Polygon Linie Knoten 2 3..* 2..* 2 Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
Beispiel Landkarten: 2. Möglichkeit (II) <!ELEMENT Landkarte (Polygon+,(Linie,Linie, Linie+),(Knoten, Knoten, Knoten+))> <!ELEMENT Polygon EMPTY> <!ELEMENT Linie EMPTY> <!ELEMENT Knoten EMPTY> <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> ... <!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> Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
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> Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14
P4 L6 L5 P9 L3 L7 P7 L1 P3 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> Thomas H. Kolbe - Geoinformationen III - 5. Semester - WS 02/03 - Vorlesung 14