1 2 3 4 5 6 7 8 9 10 11 12Geoinformation3
13 14 15 16 17 18 19 20
Geoinformation III
Fortsetzung DTDs,
UML XML
Vorlesung 13a
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 61
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
Übersicht über den dritten Vorlesungsblock
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 62
• Attribut-Definitionen spezifizieren die zu einem Element erlaubten Attribute mit ihren Datentypen.
• Syntax: für ein Element mit nur einem Attribut eine Zeile der Art:
<!ATTLIST Elementname Attributname Attributtyp Option>
A 3x
Attribut-Definition I
Für welches Element wird das Attribut definiert?
Für welches Element wird das Attribut definiert?
Bezeichner des Attributs
Bezeichner des Attributs
Welche Art von Daten sollen zuge-wiesen werden?
Welche Art von Daten sollen zuge-wiesen werden?
• Verschiedene Elemente dürfen gleichnamige Attribute besitzen.
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 63
Attribut-Definition II
• Attribut-Definitionen spezifizieren die zu einem Element erlaubten Attribute mit ihren Datentypen.
• Syntax: für ein Element mit mehreren Attributen ein Block der Art:
• <!ATTLIST Elementname Attributname1 Attributtyp1 Option1
Attributname2 Attributtyp2 Option2
. . .
Attributnamen Attributtypn Optionn >
• Innerhalb eines Elementes müssen alle Attributnamen unterschiedlich sein.
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 64
DTDs sehen zehn verschiedene Attributtypen vor:• CDATA• NMTOKEN• NMTOKENS• Aufzählung• ENTITY• ENTITIES• ID• IDREF• IDREFS• NOTATION
A 1x
Attributtypen
Auf diese Typen wird im Folgenden näher einge-gangen
Auf diese Typen wird im Folgenden näher einge-gangen
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 65
Attributtyp: CDATA
Ein Attribut vom Typ CDATA• kann jeden Textstring enthalten
<!ELEMENT Wild500 EMPTY>Variante 1:<!ATTLIST Wild500 Listenpreis CDATA #IMPLIED>Variante 2:<!ATTLIST Wild500 Listenpreis CDATA #REQUIRED>
Attributtyp
AttributElementAttributlis
teoptional
erforderlich
<Wild500 Listenpreis=“17000DM“/>
1
<Wild500/>2
1 2Für Variante 1 sind und 1für Variante 2 nur zulässig
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 66
Attributtyp: NMTOKEN (XML-Namens-Token)
Ein Attribut vom Typ NMTOKEN darf folgende Zeichen enthalten• alphanumerischen Zeichen• ideographischen Zeichen• Interpunktionszeichen ( _ ), ( - ), ( . ) und ( : )• keinerlei Leerzeichen
Beispiel: <!ATTLIST Olympiade Eröffnung NMTOKEN #REQUIRED>
<Olympiade Eröffnung=“21-07-2002“> Sport </Olympiade>
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 7
Attributtyp: NMTOKENS
Ein Attribut vom Typ NMTOKENS enthalten:• Ein oder mehrere NMTOKEN, welche durch Leerzeichen
getrennt sindBeispiel: <!ATTLIST Auftritte Tourdaten NMTOKENS #REQUIRED>
<Auftritte Tourdaten=“21-08-2002 26-08-2002“> Die Fantastischen Vier </Auftritte>
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 8
Attributtyp: Aufzählung
Ein Attribut vom Typ Aufzählung besteht aus• durch | voneinander getrennter möglichen Werte für ein
Attribut
Attributwerte dürfen nur aus den aufgezählten Werten stammenBeispiel: <!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>
<datum monat=“März“ tag=“2“ jahr=“1979“/>
<datum monat=“Januar“ tag=“02“ jahr=“1979“/>
<datum monat=“Januar“ tag=“2“ jahr=“1978“/>
f
f
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6
Attributtyp: ID
Ein Attribut vom Typ ID:• muss einen XML-Namen enthalten, der im Dokument eindeutig
ist
9
Beispiel: <!ATTLIST Abteilungsleiter Personalnummer ID #REQUIRED>
<Abteilungsleiter Personalnummer=“_123-45-6789“> Jupp Zupp </Abteilungsleiter>
Zahlen sind als ID-Werte problematisch, da sie keine XML-Namen sind. Deshalb muss ihnen z.B. ein Buchstabe oder Unterstrich vorangestellt werden.
Zahlen sind als ID-Werte problematisch, da sie keine XML-Namen sind. Deshalb muss ihnen z.B. ein Buchstabe oder Unterstrich vorangestellt werden.
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 10
Attributtyp: IDREF
Ein Attribut vom Typ IDREF• verweist auf ein Attribut vom Typ ID eines Elements im
DokumentBeispiel:<!ATTLIST Abteilungsleiter Personalnummer ID #REQUIRED>
<!ATTLIST Angestellter Vorgesetzter IDREF #REQUIRED>
<Abteilungsleiter Personalnummer=“_123-45-6789“>
Jupp Zupp </Abteilungsleiter>
<Angestellter Vorgesetzter=“_123-45-6789“> Kurt Knecht </Angestellter>
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 11
Attributtyp: IDREFS
Ein Attribut vom Typ IDREFS• verweist auf die Attribute vom Typ ID mehrerer Elemente im
Dokument• IDs werden durch Leerzeichen voneinander getrenntBeispiel:<!ATTLIST Abteilungsleiter
PersNr ID #REQUIRED Team IDREFS #REQUIRED><!ATTLIST Angestellter PersNr ID #REQUIRED>
<Abteilungsleiter PersNr=“C0815“ Team=“A911 A4711“>
Jupp Zupp </Abteilungsleiter>
<Angestellter PersNr=“A911“> Kurt Knecht </Angestellter>
<Angestellter PersNr=“A4711>“ Rudi Rödler </Angestellter>
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 12
UML XML
A 1x
M LU
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 12
UML XML
A 1x
M LU
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 12
UML XML
A 1x
M L
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 12
UML XML
A 1x
M LX
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 13
Von UML zu XML (I)
• Objektorientierte Modellierung von Systemen und Datenstrukturen erfolgt heutzutage zumeist mittels UML-Diagrammen
• Für den Datenaustausch oder die Speicherung der Anwendungsdateien ist die Verwendung von XML sinnvoll
Probleme:
• UML ist objektorientiert, XML elementorientiert
• Neben Klassen modelliert UML insbesondere auch Assoziationen– XML besitzt kein direkt vergleichbares Konzept für Assoziationen
(Einbettung von Kindelementen entspricht am ehesten der Aggregation)
• Keine 1:1-Abbildung von UML auf XML-Strukturen– Abbildung von UML nach XML nicht eindeutig (mehrere
Möglichkeiten)– Festlegung auf Abbildungsvarianten sind sog.
Entwurfsentscheidungen
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 14
Von UML zu XML (II)
A 5x
Landkarte
Polygon Linie Knoten2..*1,2 3..* 2
UML XML
Objekte
Assoziation,Aggregation
Attributtyp IDEindeutigkeit
Elemente
Kindelement(e),Attributtyp IDREF(S)
1..*
Vererbungmit DTDs nicht möglich!
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 15
• Aggregation ist eine spezielle Assoziation, deren beteiligte Klassen eine Ganzes-Teile-Hierarchie darstellen
UMLXML: Aggregation
Ganzes
Teil
DTD-Deklaration
<!ELEMENT Polygon (Linie,Linie,Linie+)><!ELEMENT Linie (#PCDATA)>
Beispiel XML-Datei
<Polygon><Linie>1</Linie><Linie>2</Linie><Linie>3</Linie>
</Polygon>
3..*
Polygon
Linie
Bestandteile werden durch Kindelemente repräsentiert
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 16
UMLXML: Assoziation
<!ATTLIST Linie Linien_ID ID #REQUIRED Knoten_IDs IDREFS #REQUIRED>
<!ATTLIST Knoten Knoten_ID ID #REQUIRED Linien_IDs IDREFS #REQUIRED>
Elemente erhalten ein eindeutiges Identifikationsattribut Schlüssel
Von jedem Element werden alle Verweise auf eine andere Klasse durch eine Menge von Referenzen (IDs der referenzierten Elemente) repräsentiert Fremdschlüssel
Linie Knoten2..* 2
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 17
<!ATTLIST Linie Linien_ID ID #REQUIRED Knoten_IDs IDREFS #REQUIRED>
<!ATTLIST Knoten Knoten_ID ID #REQUIRED Linien_IDs IDREFS #REQUIRED>
UMLXML: Assoziation
<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=“P3 P9“ /><Knoten Knoten_ID=“P3“ Linien_IDs=“L1 L7“ >100,100</Knoten><Knoten Knoten_ID=“P4“ Linien_IDs=“L5 L6“ >250,200</Knoten><Knoten Knoten_ID=“P7“ Linien_IDs=“L1 L3
L5“>200,100</Knoten><Knoten Knoten_ID=“P9“ Linien_IDs=“L3 L6
L7“>150,200</Knoten>
P9 P4
P7P3
L7
L1
L6
L5L3
Linie Knoten2..* 2
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 18
UMLXML: Vererbung
Eine Vererbung, wie sie bei UML möglich ist, kann mit DTDs nur manuell
nachgebildet werden.Geerbte Attribute von Oberklassen müssen in Unterklassen ausdrücklich noch einmal deklariert werden:
<!ELEMENT Person (Name,Vorname)><!ELEMENT Student (Name,Vorname,Matrikelnummer)>
Person
Name Vorname
Student
Matrikelnummer
Attribute von Student:
Name geerbt vonVorname PersonMatrikelnummer
}
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 19
UMLXML: Vererbung
Eine Vererbung, wie sie bei UML möglich ist, kann in XML nur manuell
nachgebildet werden.Person
Name Vorname
Student
Matrikelnummer
Nachteil:Keine echte Vererbung, da sich die Attribute der Unterklassen bei Veränderung der Oberklasse nicht automatisch mitändern.
Eine weitere Lösungsmöglichkeit ist die Nutzung von XML-Schema (siehe nächste Vorlesung)
1 2 3 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20Geoinformation3
5 6 20
Beispiel Landkarten: 1. Möglichkeit (I)
<!ELEMENT Landkarte (Polygon+)><!ELEMENT Polygon (Linie, Linie, Linie+)><!ELEMENT Linie (Knoten, Knoten)><!ELEMENT Knoten (EMPTY)>
<!ATTLIST Knoten xKoord CDATA #REQUIREDyKoord CDATA #REQUIRED>
Landkarte
Polygon Linie Knoten
1..*3..* 22..*2