ELEMENT Linie (Knoten, Knoten)

Werbung
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
Herunterladen