Geoinformation 3 1 2 3 4 5 6 7 8 9 10 11 Geoinformation III Vorlesung 13b Fortsetzung DTDs, UML XML 12 13 Geoinformation 3 1 2 3 4 5 6 7 8 9 10 11 12 13 Beispiel Landkarten: 1. Möglichkeit (I) <!ELEMENT Landkarte (Polygon+)> <!ELEMENT Polygon (Linie, Linie, Linie+)> <!ELEMENT Linie (Knoten, Knoten)> <!ELEMENT Knoten (EMPTY)> Landkarte <!ATTLIST Knoten xKoord CDATA #REQUIRED yKoord CDATA #REQUIRED> 1..* Polygon 2 3..* Linie 2..* 2 Knoten Geoinformation 3 1 2 3 4 5 6 7 8 9 10 11 12 13 Beispiel Landkarten: 1. Möglichkeit (II) <!ELEMENT Landkarte (Polygon+)> <Landkarte> <!ELEMENT Polygon (Linie, Linie, Linie+)> <Polygon> <!ELEMENT Linie (Knoten, Knoten)> <Linie> <!ELEMENT Knoten (#PCDATA)> <Knoten xKoord=“100“ yKoord=“100“ /> <Knoten xKoord=“200“ yKoord=“100“ /> <!ATTLIST Knoten </Linie> xKoord CDATA #REQUIRED <Linie> yKoord CDATA #REQUIRED> <Knoten xKoord=“200“ yKoord=“100“ /> <Knoten xKoord=“150“ yKoord=“200“ /> 150, 200 </Linie> <Linie> <Knoten xKoord=“100“ yKoord=“100“ /> <Knoten xKoord=“150“ yKoord=“200“ /> </Linie> </Polygon> </Landkarte> 100, 100 200, 100 A 2x Geoinformation 3 1 2 3 4 5 6 7 8 9 10 11 12 13 Beispiel Landkarten: 2. Möglichkeit (I) <!ELEMENT Landkarte (Polygon+,(Linie, Linie, Linie+),(Knoten, Knoten, Knoten+))> <!ELEMENT Polygon EMPTY> Landkarte <!ELEMENT Linie EMPTY> <!ELEMENT Knoten EMPTY> 1..* Polygon 3..* 2 3..* Linie 3..* 2..* 2 Knoten Geoinformation 3 1 2 3 4 5 6 7 8 9 10 11 12 13 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> Linien_ID ID #REQUIRED Knoten_IDs IDREFS #REQUIRED> Knoten_ID ID #REQUIRED xKoord CDATA #REQUIRED yKoord CDATA #REQUIRED> <!ATTLIST <!ATTLIST Linie Knoten Geoinformation 3 1 2 3 4 5 6 7 8 9 10 11 12 13 Beispiel Landkarten: 2. Möglichkeit (III) <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“ /> L5 <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“ P7 <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> P4 L6 P9 L3 L7 L1 P3 /> /> /> /> Geoinformation 3 1 2 3 4 5 6 7 8 Namensräume (Namespaces) 9 10 11 12 13 Geoinformation 3 1 2 3 4 5 6 7 8 9 10 11 12 13 Namensräume (I) „Sonnensystem“: „Elemente“: <Saturn> <Luft> <Pluto> <Jupiter> <Feuer> <Wasser> <Erde> <Erde> Namensraum Namensraum qualifizierter Name < sonnensystem : erde > Namensraum-Präfix A 7x < elemente : erde > Lokaler Element- oder Attribut-Name Geoinformation 3 1 2 3 4 5 6 7 8 9 10 11 12 13 Namensräume (II) • XML-Dokumente dürfen Elemente aus mehreren DTDs enthalten – verschiedene DTDs definieren u.U. gleichnamige Element Namenskonflikt – Software-Module müssen erkennen, für welche Teile des Dokuments sie zuständig sind • Lösung: Gruppierung von Namen für Elemente und Attribute und Zuordnung zu Namensräumen – • Jede Anwendung deklariert typischerweise ihren eigenen Namensraum (Beispiele siehe GML, SVG, SMIL usw.) Verwendung von qualifizierten Namen erlaubt – problemlose Verwendung unterschiedlicher DTDs – Modularisierung – Code-Recycling Geoinformation 3 1 2 3 4 5 6 7 8 9 10 11 12 13 Namensraumdeklaration • Namensräume werden weltweit eindeutig durch eine URI (Uniform Resource Identifier) identifiziert • Namensraum-Präfix muss ein XML-Name sein – darf keine Sonderzeichen usw. enthalten – URI´s beinhalten aber oftmals Sonderzeichen (http://test.com/namespace) • Namensraumdeklaration ordnet Präfix und URI einander zu: <person xmlns:job=“http://www.berufe-online.de/berufe“> <vorname>Carl Friedrich</vorname> <nachname>Gauß</nachname> <job:berufsbezeichnung>Mathematiker</job:berufsbezeichnung> </person> Geoinformation 3 1 2 3 4 5 6 7 8 9 10 11 12 13 Anwendung und Geltungsbereiche (I) • • • Der Namensraum-Präfix muss im aktuellen oder einem übergeordneten Element deklariert sein Präfixe xml und xmlns werden nicht deklariert Eine Namensraumdeklaration gilt bereits für das Element, in dessen Start-Tag sie erfolgt: <?xml version=“1.0“?> <!-- alle Elemente hier stehen explizit im Namensraum Personen --> <pers:person xmlns:pers=“http://www.personenregister.de/personen“ <pers:vorname>Carl Friedrich</pers:vorname> <pers:nachname>Gauß</pers:nachname> <job:berufsbezeichnung xmlns:job=“http://www.berufe-online.de/berufe“> Mathematiker </job:berufsbezeichnung> </pers:person> Geoinformation 3 1 2 3 4 5 6 7 8 9 10 11 12 13 Anwendung und Geltungsbereiche (II) • In einem Tag können mehrere Namensraum-Deklarationen stehen: <pers:person xmlns:pers=“http://www.personenregister.de/personen“ <pers:vorname>Carl Friedrich</pers:vorname> <pers:nachname>Gauß</pers:nachname> <job:berufsbezeichnung xmlns:job=“http://www.berufe-online.de/berufe“> Mathematiker </job:berufsbezeichnung> </pers:person> in diesem konkreten Beispiel äquivalent <pers:person xmlns:pers=“http://www.personenregister.de/personen“ xmlns:job=“http://www.berufe-online.de/berufe“> <pers:vorname>Carl Friedrich</pers:vorname> <pers:nachname>Gauß</pers:nachname> <job:berufsbezeichnung>Mathematiker</job:berufsbezeichnung> </pers:person> A 1x Geoinformation 3 1 2 3 4 5 6 7 8 9 10 11 12 13 Default-Namensräume • • • gelten für alle Elemente, die keinen Namensraum-Präfix besitzen gelten nicht für Attributnamen ist die URI des Default-Namensraums leer, sind die Elemente ohne Präfix keinem Namensraum zugeordnet (unqualifizierter Name) Deklaration hier ohne Doppelpunkt! <?xml version=“1.0“?> <!–- anfangs ist der Default-Namensraum “Personen“ --> <person xmlns=“http://www.personenregister.de/personen“> <vorname>Carl Friedrich</vorname> <nachname>Gauß</nachname> <!-- neuer Default-Namensraum wird jetzt “Berufe“ --> <berufsbezeichnung xmlns=“http://www.berufe-online.de/berufe“> Mathematiker </berufsbezeichnung> </person> Geoinformation 3 1 2 3 4 5 6 7 8 9 10 11 12 13 Geltungsbereiche von Default-Namensräumen Namensraum Personen person xmlns=“http://.../personen“ name Namensraum Berufe beruf xmlns=“http://.../berufe“ vorname A 1x nachname bezeichnung ausbildungsdauer