26
JAVA und XML JAVA und XML Programmierpraktikum Programmierpraktikum XML 1.0 / Namespaces XML 1.0 / Namespaces Von Markus Lucht & Von Markus Lucht & Timo Stollenwerk Timo Stollenwerk

JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Embed Size (px)

Citation preview

Page 1: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

JAVA und XML JAVA und XML ProgrammierpraktikumProgrammierpraktikum

XML 1.0 / NamespacesXML 1.0 / NamespacesVon Markus Lucht &Von Markus Lucht &

Timo StollenwerkTimo Stollenwerk

Page 2: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

InhaltInhalt

- Einführung (Markus)Einführung (Markus)- XML 1.0 (Timo)XML 1.0 (Timo)- Namespaces (Markus)Namespaces (Markus)

Page 3: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Komponenten eines DokumentesKomponenten eines Dokumentes

- Ein Dokument besteht aus 3 Teilen:Ein Dokument besteht aus 3 Teilen:1.1. Inhalt (Text, Bilder)Inhalt (Text, Bilder)2.2. Informationen zur (visuellen) DarstellungInformationen zur (visuellen) Darstellung3.3. Struktur des Textes (Aufteilung in Kapitel, Struktur des Textes (Aufteilung in Kapitel,

Abschnitte ...)Abschnitte ...)

Page 4: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Darstellung von Dokumenten(1)Darstellung von Dokumenten(1)

Zwei Ansätze zur Dartellung:Zwei Ansätze zur Dartellung:1.1. WYSIWYG (What You See Is What You Get, ca. WYSIWYG (What You See Is What You Get, ca.

1984)1984)- Erlaubte erstmals eine identische Darstellung von Text Erlaubte erstmals eine identische Darstellung von Text

auf Papier und auf dem Bildschirmauf Papier und auf dem Bildschirm- Die Arbeitsweise orientiert sich fast nur am Layout, an Die Arbeitsweise orientiert sich fast nur am Layout, an

der Formatierung und an der Darstellung des Textsder Formatierung und an der Darstellung des Texts Problem, wenn ein anderes Ausgabemedium als Papier Problem, wenn ein anderes Ausgabemedium als Papier

gewählt wirdgewählt wird

Page 5: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Darstellung von Dokumenten(2)Darstellung von Dokumenten(2)

2.2. generic coding (1967 W. Tunnicliffe)generic coding (1967 W. Tunnicliffe)- Idee: Struktur und die logischen Informationen Idee: Struktur und die logischen Informationen

bleiben erhaltenbleiben erhalten

generic markup (ende der 60er S. generic markup (ende der 60er S. Rice)Rice)

- generic markup konzentriert sich daraufgeneric markup konzentriert sich darauf Auszeichnungen in den Text einzubringen, die Auszeichnungen in den Text einzubringen, die eine Aussage über die Bedeutung der markierten eine Aussage über die Bedeutung der markierten Textstelle machenTextstelle machen

Page 6: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Enstehung von GML und SGMLEnstehung von GML und SGML

Weiteres Konzept: der DokumenttypWeiteres Konzept: der Dokumenttyp- der Dokumenttyp beschreibt eine Klasse von Dokumenten, die sich in der Dokumenttyp beschreibt eine Klasse von Dokumenten, die sich in

ihrem strukturellem Aufbau gleichenihrem strukturellem Aufbau gleichen

Enstehung von GML und SGMLEnstehung von GML und SGML- Auf den o.g. Ideen entwickelten 1969 C. Goldfarb, E. Mosher und R. Auf den o.g. Ideen entwickelten 1969 C. Goldfarb, E. Mosher und R.

Lorie bei IBM die Generalized Markup Language (GML)Lorie bei IBM die Generalized Markup Language (GML) Erstmals das Konzept eines formal def. Dokumenttyps mit Erstmals das Konzept eines formal def. Dokumenttyps mit

verschachtelter Strukturverschachtelter Struktur Dokumente enthalten Informationen über den Text (Meta-Daten)Dokumente enthalten Informationen über den Text (Meta-Daten) Vorteil: Unabhängigkeit vom Ausgabemedium, da keine Vorteil: Unabhängigkeit vom Ausgabemedium, da keine

Formatierungsanweisungen gespeichert werdenFormatierungsanweisungen gespeichert werden- 1984 wird SGML (S:Standardized) als ISO-Standard veröffentlicht1984 wird SGML (S:Standardized) als ISO-Standard veröffentlicht

Page 7: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

XML ist SGML für das WWWXML ist SGML für das WWW- Man suchte nach einem Kompromiss zwischen zu viel Man suchte nach einem Kompromiss zwischen zu viel

Komplexität (SGML, was das WWW angeht) und zu Komplexität (SGML, was das WWW angeht) und zu wenig Gestaltungsmöglichkeiten (HTML)wenig Gestaltungsmöglichkeiten (HTML)

- Lösung: XML (=Extensible Markup Language) Lösung: XML (=Extensible Markup Language) 1.Recommendation 1998 durch das W3C1.Recommendation 1998 durch das W3C

- XML kann mehr als HTML, da:XML kann mehr als HTML, da:(1)(1) man beliebige Elemente verwenden kann (OO man beliebige Elemente verwenden kann (OO hieße hieße das Äquivalent „abstrakte Datentypen“)das Äquivalent „abstrakte Datentypen“)(2)(2) XML ist eine Metasprache XML ist eine Metasprache (Sprachbeschreibungssprache), HTML eine (Sprachbeschreibungssprache), HTML eine Strukturbeschreibungssprache für Web-DokumenteStrukturbeschreibungssprache für Web-Dokumente

- XML ist als Teilmenge von SGML nicht so komplexXML ist als Teilmenge von SGML nicht so komplex

Page 8: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Vor- und Nachteile von XMLVor- und Nachteile von XML

Vorteile:Vorteile:- Offenes Format (XML-Standard ist offen zugänglich)Offenes Format (XML-Standard ist offen zugänglich)- Systemunabhängigkeit (unabhängigkeit von Systemunabhängigkeit (unabhängigkeit von

Betriebs-/Computersystem)Betriebs-/Computersystem)- Medienneutral (unabhängig vom Ausgabeformat)Medienneutral (unabhängig vom Ausgabeformat)- Anpassbar (kein starres Format)Anpassbar (kein starres Format)

Nachteile:Nachteile:- Hoher InitialaufwandHoher Initialaufwand- Laufende EntwicklungLaufende Entwicklung

Page 9: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Entwurfsziele (1)Entwurfsziele (1)

1.1. XML soll sich im Internet auf einfache Weise XML soll sich im Internet auf einfache Weise nutzen lassennutzen lassen

2.2. XML soll ein breites Spektrum von XML soll ein breites Spektrum von Anwendungen unterstützenAnwendungen unterstützen

3.3. XML soll zu SGML kompatibel seinXML soll zu SGML kompatibel sein4.4. Es soll einfach sein, Programme zu schreiben, Es soll einfach sein, Programme zu schreiben,

die XML-Dokumente verarbeitendie XML-Dokumente verarbeiten5.5. Die Zahl optionaler Merkmale soll minimal sein, Die Zahl optionaler Merkmale soll minimal sein,

idealerweise Nullidealerweise Null

Page 10: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Entwurfsziele (2)Entwurfsziele (2)

6.6. XML-Dokumente sollen für Menschen lesbar XML-Dokumente sollen für Menschen lesbar und angemessen verständlich seinund angemessen verständlich sein

7.7. Der XML-Entwurf sollte zügig abgefasst seinDer XML-Entwurf sollte zügig abgefasst sein8.8. Der Entwurf von XML soll formal und präzise Der Entwurf von XML soll formal und präzise

seinsein9.9. XML-Dokumente sollen leicht zu erstellen seinXML-Dokumente sollen leicht zu erstellen sein10.10. Knappheit von XML-Markup ist von minimaler Knappheit von XML-Markup ist von minimaler

BedeutungBedeutung

Page 11: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

XML als MarkierungsspracheXML als Markierungssprache

- XML ist eine MarkierungsspracheXML ist eine Markierungssprache- XML dient der Strukturierung und XML dient der Strukturierung und

Beschreibung von DatenBeschreibung von Daten- XML trennt den Inhalt von der XML trennt den Inhalt von der

FormatierungFormatierung<?xml version=""1.0""?><memo> <from>Mir</from> <to>Jemand</to> <subject>Ein Text</subject> <body>Hallo!</body></memo>

Page 12: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Struktur von XML-DokumentenStruktur von XML-DokumentenEin Dokument ist ein XML-Dokument, wenn es Ein Dokument ist ein XML-Dokument, wenn es wohlgeformt ist, genügt es bestimmten weiteren wohlgeformt ist, genügt es bestimmten weiteren Beschränkungen, kann es gültig sein.Beschränkungen, kann es gültig sein.

Wohlgeformt (well formed):

- Logische Struktur ist korrekt- Alle Wohlgeformtheitsbeschränkungen sind erfüllt

Gültig (valid):

- Passende DTD (Dokumenttyp-Deklaration)- Beschränkungen der DTD sind eingehalten

Page 13: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

XML als BaumstrukturXML als Baumstruktur

DATUM KURS

KUERZEL WERT

KURSZETTEL

PLATZ

Page 14: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Wohlgeformtes XML-DokumentWohlgeformtes XML-Dokument

<?xml version="1.0"?><?xml version="1.0"?><!DOCTYPE KURSZETTEL SYSTEM "kurse.dtd"><!DOCTYPE KURSZETTEL SYSTEM "kurse.dtd"><KURSZETTEL><KURSZETTEL>

</KURSZETTEL></KURSZETTEL>

<KUERZEL>DBK</KUERZEL><KUERZEL>DBK</KUERZEL>

<DATUM VALUE="2.3.2001"/><DATUM VALUE="2.3.2001"/><KURS DATUM="HEUTE"><KURS DATUM="HEUTE">

<PLATZ>FSE</PLATZ><PLATZ>FSE</PLATZ><WERT WAEHRUNG="DEM">58,880</WERT><WERT WAEHRUNG="DEM">58,880</WERT>

</KURS></KURS>

Page 15: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

DTD: Kurse.dtdDTD: Kurse.dtd

<?xml encoding="US-ASCII"?><?xml encoding="US-ASCII"?><!ELEMENT KURSZETTEL (DATUM?, KURS*)><!ELEMENT KURSZETTEL (DATUM?, KURS*)> <!ELEMENT DATUM EMPTY><!ELEMENT DATUM EMPTY> <!ATTLIST DATUM VALUE CDATA #REQUIRED><!ATTLIST DATUM VALUE CDATA #REQUIRED> <!ELEMENT KURS (KUERZEL, WERT)><!ELEMENT KURS (KUERZEL, WERT)> <!ATTLIST KURS DATUM (HEUTE|GESTERN) #IMPLIED><!ATTLIST KURS DATUM (HEUTE|GESTERN) #IMPLIED> <!ELEMENT KUERZEL ANY><!ELEMENT KUERZEL ANY> <!ELEMENT WERT ANY><!ELEMENT WERT ANY> <!ATTLIST WERT WAEHRUNG CDATA #IMPLIED><!ATTLIST WERT WAEHRUNG CDATA #IMPLIED> <!ENTITY Euro "EUR"><!ENTITY Euro "EUR"> <!ENTITY Mark "DEM"><!ENTITY Mark "DEM">

Page 16: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Logische StrukturLogische Struktur1.1. Prolog: Spezifikation über den Prolog: Spezifikation über den

DokumenttypDokumenttyp

2.2. Element: eigentlicher Inhalt des Element: eigentlicher Inhalt des DokumentsDokuments

- XML-Deklaration / Dokumenttyp- DeklarationXML-Deklaration / Dokumenttyp- Deklaration

- Das Dokument-Element enthält alle DatenDas Dokument-Element enthält alle Daten

<?xml version="1.0"?>

<!DOCTYPE KURSZETTEL SYSTEM "kurse.dtd">

<KURSZETTEL>...</KURSZETTEL><KURSZETTEL>...</KURSZETTEL>

- Beliebige Anzahl verschachtelter UnterelementeBeliebige Anzahl verschachtelter Unterelemente<KUERZEL>DBK</KUERZEL><PLATZ>FSE</PLATZ><KUERZEL>DBK</KUERZEL><PLATZ>FSE</PLATZ>

Page 17: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Physikalische StrukturPhysikalische Struktur

- Besteht aus dem gesamten Inhalt des Besteht aus dem gesamten Inhalt des DokumentesDokumentes

- Dokument wird in Entities Dokument wird in Entities (Speichereinheiten) unterteilt(Speichereinheiten) unterteilt

- Dokument-Entitie ist die Anlaufstelle für Dokument-Entitie ist die Anlaufstelle für ParserParser

- Analysierte / nicht analysierte DatenAnalysierte / nicht analysierte Daten

Page 18: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Namespaces(1)Namespaces(1)

Problem:Problem:Bei XML-Anwendungen kann es durch die Bei XML-Anwendungen kann es durch die Verwendung von Elementen und Attributen Verwendung von Elementen und Attributen (=Markup-Vokabular) zu folgenden Problemen (=Markup-Vokabular) zu folgenden Problemen kommen (besonders bei kommen (besonders bei Softwarewiederverwendung):Softwarewiederverwendung):-- MehrdeutigkeitMehrdeutigkeit-- NamenskollisionenNamenskollisionen

Page 19: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Namespaces(2)Namespaces(2)

Lösung:Lösung:Dokumentkonstrukte sollten einzigartige Dokumentkonstrukte sollten einzigartige Namen haben, deren Geltungsbereich über Namen haben, deren Geltungsbereich über den des beinhaltenden Dokuments den des beinhaltenden Dokuments hinausgeht. XML-Namespaces ist ein hinausgeht. XML-Namespaces ist ein Mechanismus, der diese Anforderungen Mechanismus, der diese Anforderungen erfüllt. Namespaces erreichten die W3C-erfüllt. Namespaces erreichten die W3C-Recommendation am 14.01.99Recommendation am 14.01.99

Page 20: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

DeklarationDeklaration

Namespacedeklarationen bestehen aus einem Namespacedeklarationen bestehen aus einem reservierten Bezeichner : xmlns und seinem Wert, reservierten Bezeichner : xmlns und seinem Wert, der URI. Die URI ist oft eine URL, welche auf der URI. Die URI ist oft eine URL, welche auf eine DTD verweist.eine DTD verweist.

</x><x xmlns=„http://www.eineAdresse.de/egal.dtd“

Page 21: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Geltungsbereich für Geltungsbereich für Namespaces(1)Namespaces(1)

- Namespace-Deklarationen haben einen Namespace-Deklarationen haben einen Geltungsbereich wie Variablendeklarationen in Geltungsbereich wie Variablendeklarationen in Programmiersprachen. Programmiersprachen.

- Die Namespace-Deklaration gilt für das Element, Die Namespace-Deklaration gilt für das Element, in dem sie angegeben ist und für alle Elemente im in dem sie angegeben ist und für alle Elemente im Inhalt dieses Elements (Kinder-Elemente), es sei Inhalt dieses Elements (Kinder-Elemente), es sei denn, sie wird durch eine andere Namespace-denn, sie wird durch eine andere Namespace-Deklaration überschriebenDeklaration überschrieben

- Man unterscheidet zwei Arten: default und Man unterscheidet zwei Arten: default und qualifiedqualified

Page 22: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Geltungsbereich für Geltungsbereich für Namespaces(2)Namespaces(2)

Default:Default:Alle unqualifizierten Namen innerhalb des Alle unqualifizierten Namen innerhalb des Wirkungsbereichs der Deklaration gehören automatisch Wirkungsbereichs der Deklaration gehören automatisch zum default-namespacezum default-namespace

<Kapitel xmlns=„http://www.irgendeinURI.com/1.dtd><Titel groesse =„10“>Namespaces</Title><Autor>M.L.</Autor><Inhalt>

...Nun eine Tabelle<table xmlns=http://www.w3.org/...html40>

<tr><td>Hallo</td>

</tr></table>

</Inhalt></Kapitel>

Page 23: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Geltungsbereich für Geltungsbereich für Namespaces(3)Namespaces(3)

Qualified:Qualified:Namespaces werden am Anfang eines Dokumentes Namespaces werden am Anfang eines Dokumentes deklariert und erst bei Gebrauch qualifiziertdeklariert und erst bei Gebrauch qualifiziert<Messungen xmlns=„urn:daten-messungen“

xmlns:units=„urn:daten-units“ xmlns:prop=„urn:daten-props“>

<Lufttemp units:unit=„Celsius“>86</Lufttemp><Tank>

<prop:Volumen units:unit=„liter“>120</prop:Volumen>

</Tank></Messungen>

Page 24: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Beispiel: Qualified NamespacesBeispiel: Qualified Namespaces

Namespace Namespace

Katalog.dtd...

<..Buch..>

Order.dtd

...<..Preis..>

Dokument

xmlns:Kat:=„Katalog.dtd“xmlns:Order=„Order.dtd“

<Kat:Buch>...

<Order:Preis>...

Page 25: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

Einzigartigkeit von AttributenEinzigartigkeit von Attributen

Es sollte kein Tag geben, das zwei Attribute Es sollte kein Tag geben, das zwei Attribute enthält, die:enthält, die:(1)(1) identische Namen haben, oderidentische Namen haben, oder(2) Qualified Names mit dem gleichen (2) Qualified Names mit dem gleichen lokalen Namensteil haben und mit lokalen Namensteil haben und mit Präfixen, die mit Namespacenamen Präfixen, die mit Namespacenamen verbunden sind, die Identisch sind (Der verbunden sind, die Identisch sind (Der

voreingestellte Namensraum gilt nicht voreingestellte Namensraum gilt nicht für Attribute)für Attribute)

Page 26: JAVA und XML Programmierpraktikum XML 1.0 / Namespaces Von Markus Lucht & Timo Stollenwerk

LiteraturangabenLiteraturangaben- Extensible Markup Language (XML) 1.0 / Empfehlung Extensible Markup Language (XML) 1.0 / Empfehlung

des W3C, 10. Februar 1998des W3C, 10. Februar 1998- Die Sprachen des Web: HTML & XHTML Robert Die Sprachen des Web: HTML & XHTML Robert

Tolksdorf; dpunkt-Verl.,2000Tolksdorf; dpunkt-Verl.,2000- Java & XML Brett McLaughlin, O‘Reilly, 2001Java & XML Brett McLaughlin, O‘Reilly, 2001- IX / Magazin für Professionelle Informationstechnik, Juni IX / Magazin für Professionelle Informationstechnik, Juni

20012001- Seminar „Erweiterung von XML – Namespaces“ / Seminar „Erweiterung von XML – Namespaces“ /

Humboldt-Universität zu Berlin (Becker/Zubow)Humboldt-Universität zu Berlin (Becker/Zubow)- XML in der Praxis Behme,Mintert, Addison-Wesley XML in der Praxis Behme,Mintert, Addison-Wesley