Transcript Titelfolie

XML
Parser
Hauptseminar Softwaretechnologie
TU Dresden, SS 2001
Stefan Fromm
1
X
M
L
Gliederung
1. XML
Charakteristik
Beispiel XML-Dokument
2. Parser
SAX und DOM
Java-Implementierungen
3. Beispiele
Apache Crimson
IBM XML4J
2
X
M
L
XML
Was ist XML?
• XML = eXtensible Markup Language
• Meta-Sprache zum Erzeugen neuer Markup-Sprachen:
- CML (Chemical Markup Language)
- MathML (Mathematical Markup Language)
- SMIL (Synchronized Multimedia Integration Language)
- ...
3
X
M
L
XML
Historie
1950
1969
1986
1989
1994
1996
1997
1998
1999
Hypertext
GML
SGML
HTML
HTML 2.0, CSS 1.0
HTML 3.2, XML 1.0
HTML 4.0
CSS 2.0, XML 1.0,
XSL 1.0
XML, ...
Theorie von Tod Nelson
Generalized ML von IBM
Standard GML als ISO-8879
Tim Bernes-Lee in Genf
W3C-Standard
XML als W3C-Diskussionsvorschlag
W3C-Richtlinie
XML als W3C-Standard,
XSL als W3C-Vorschlag
zahlreiche Erweiterungen für XML
 XML ist abgespeckte Version von SGML
4
X
M
L
XML
Charakteristik
Trennung zwischen Daten und Sprachdefinition
dynamische Tags
hierarchische
Elementstruktur
keine HTML-Unsitten:
• korrekte Schachtelung
• Tags schließen
Document Type Definition
definiert Syntax der Daten
angelehnt an EBNF
intern oder externe Datei
ermöglicht phys.
Datenverteilung
well-formed
valid
XML
DTD
5
X
M
L
XML
Bestandteile
Elemente – Strukturknoten
<start-tag>...</end-tag>, leere Elemente mit <.../>
Attribute - beschreiben Elemente näher (name=“value“)
Entity – physische Speichereinheiten
parsed / unparsed, internal / external, general / parameter
Processing Instruction - Anweisungen für Anwendungen
<?target text?>
Notation – Erläuterung zu Entities, Processing Instructions
Namespace – Namensraum für Elemente-/Attribute-Namen
<namespace:element xmlns:namespace=“...“>
CDATA-Section - Freitext ohne Einschränkungen
<![CDATA[...]]>
Kommentar
<!-- ... -->
6
X
M
L
XML
Bewertung
Vorteile
Nachteile
ASCII  portabel,
Datenaustausch
nicht so kompakt wie binär
flexibel in Datendefinition,
selbstbeschreibend
strukturierte Darstellung 
Parser für alle XML-Dokumente
für Freiformtext schlecht
verwendbar
Validierung anhand
Syntaxvorgabe
sprachunabhängig
einfach erlernbar
7
X
M
L
XML
Beispiel – Versandhaus
DTD
definiert DTD-Entity
bindet ein
orderlist.dtd
product
validiert
product.dtd
definiert XML-Entity
XML
shower
bindet ein
orderlist.xml
showeraccessories.xml
8
X
M
L
XML
Beispiel – Document Type Definition
orderlist.dtd
XML-Elemente oft
gleich benannt
 Kollisionen bei
mehreren XMLDokumenten...
product.dtd
9
X
M
L
XML
Beispiel – XML-Dokument (1)
...Lösung: Namespaces
(hier globaler Namensraum – aber auch elementeweise)
orderlist.xml
10
X
M
L
XML
Beispiel – XML-Dokument (2)
orderlist.xml
showeraccessories.xml
11
X
M
L
Gliederung
1. XML
Charakteristik
Beispiel XML-Dokument
2. Parser
SAX und DOM
Java-Implementierungen
3. Beispiele
Apache Crimson
IBM XML4J
12
X
M
L
Java Parser
Parser
XML-Datei
Parser
DTD
Java Parser...
• transformiert XML in Java-Objekte für Laufzeitzugriff
• prüft, ob XML wohlgeformt
• prüft, ob XML gültig anhand einer Grammatik
 Syntaxanalyse
13
X
M
L
Java Parser
SAX – Konzept
• SAX = Simple API for XML
• ereignisorientiertes Parsen, d.h. Ereignishandler werden vom Parser
benachrichtigt
• entwickelt von Mitgliedern der XML-DEV Mailing List
• aktuell: Version 2.0
• Sammlung von Java-Interfaces (C++ ist in Arbeit)
• SAX Parser implementieren Interfaces  austauschbar
14
X
M
L
Java Parser
SAX 2 – Interfaces
veraltete Interfaces
von SAX 1.0 nicht
dargestellt
Adapter-Klassen
für Übergang zu
SAX 2.0 sind
implementiert
15
X
M
L
Java Parser
SAX 2 – Event Handler
ContentHandler
• reagiert auf Dokumentstart / -ende, Elemente, NamespaceDeklarationen, Textdaten
DTDHandler
• reagiert auf Notationen und ungeparste Entities (Binärdaten,
Bilder, ...)
ErrorHandler
• ermöglicht Fehlerausgabe
• Unterteilung in leichte / fatale Fehler und Warnungen
EntityResolver
• Auflösen von URI‘s zu Entities
DeclHandler + LexicalHandler (Erweiterungen)
• DTD-Ereignisse abfangen
• Text-Ereignisse abfangen (Kommentar, CDATA, DTD, Entity)
16
X
M
L
Java Parser
DOM – Konzept
• DOM = Document Object Model
• gesamtes XML-Dokument wird in Objekt-Baum überführt
• standardisiert vom W3C
• aktuell: Level 2, Level 3 in Arbeit
• Sammlung von zu implementierenden Interfaces
• Interfaces in IDL sprachneutral definiert
• Sprachbindung von IDL an Programmiersprachen (Java, C++, ...)
spezifiziert
• besteht aus Kern und Erweiterungen
17
X
M
L
Java Parser
DOM 2 – Core-Interfaces
18
X
M
L
Java Parser
DOM 2 – Bestandteile
Core
• Basisschnittstelle zur Baumdarstellung von XML-Dokumenten
• in DOM 2 neue Methoden zur Namespace-Unterstützung
Views (ab DOM2)
• def. abstr. View zur Darstellung von XML-Dok‘s in Browsern / Editoren
Events (ab DOM2)
• Ereignisse auslösen (z.B. Dokumentänderungen durch GUI, Maus, ...)
Traversal (ab DOM2)
• Iterator und Treewalker zum Navigieren in DOM-Bäumen
• Range-Selection in DOM-Bäumen (z.B. als Selektion in GUI)
HTML (ab DOM2)
• Core-Erweiterung für Beschreibung von HTML
Style (ab DOM2)
• Zugriff auf Stylesheet-Dok‘s (Spezialisierung für CSS)
19
X
M
L
Java Parser
Vergleich SAX / DOM
Simple API for XML
Document Object Model
ereignisorientiert
Aufbau Baum-Struktur
schnell in größeren Dokumenten
langsam in großen Dokumenten
Aufbau eines eigenen DOM
möglich (nicht notwendig)
DOM wird vom Parser aufgebaut
(Baumstruktur)
Interfaces nur zum Lesen von
XML ausgelegt
kein Schreiben von XML, obwohl
Interfaces es hergeben
20
X
M
L
Java Parser
XML und Java
• Java als Internet-Sprache
• Java-Technologien bieten Basis für Web-Anwendungen
(e-Commerce, ...)
• XML dient Datendarstellung / Datenaustausch
• Java ist plattformunabhängig
• XML ist sprachunabhängig
 Kombination im Internet sinnvoll
21
X
M
L
Java Parser
Implementierungen
Parser
unterstützt
valid.
Version
Adresse
Ælfred
SAX1
nein
1.2a
www.microstar.com
IBM XML4J
SAX1,
DOM2
ja
3.1.1 (ben.
Xerces 1.2)
xml.apache.org
XP
SAX1
nein
0.5
www.jclark.com/xml/
Lark
Eigenbau
nein
1.0
Larval
Eigenbau
ja
1.0
www.textuality.com/
Lark
Sun JAXP
SAX2,
DOM2 Core
ja
1.1
sun.java.com
Sun ProjectX
SAX1,
DOM1
ja
TechRel 2
sun.java.com/xml
Crimson
SAX2,
DOM2
ja
1.1 (erweit.
JAXP 1.1)
xml.apache.org
22
X
M
L
Java Parser
DOM-Parser – Performance
Quelle: www.developerlife.com
23
X
M
L
Gliederung
1. XML
Charakteristik
Beispiel XML-Dokument
2. Parser
SAX und DOM
Java-Implementierungen
3. Beispiele
Apache Crimson
IBM XML4J
24
X
M
L
Beispiele
Crimson (1)
25
X
M
L
Beispiele
Crimson (2)
26
X
M
L
Beispiele
IBM XML4J
27
X
M
L
Fazit
• strukturierte Daten mit XML  Datenaustausch, Datenbanken
• noch viele XML-Anwendungen erforderlich – Parser nur erster Schritt
• viele weitere Standardisierungen des W3C:
XSL
– eXtensible Stylesheet Language
XLink – eXtensible Linking Language
XQL
– XML Query Language
XMI
– XML Metadata Interchange
...
• könnte HTML mit erstem vollwertigem XML-Browser ablösen
(auf WWW6-Konferenz bereits angesprochen, HTML nur bis 4.0 zu
entwickeln [www.heise.de – iX 6/1997 S. 106: Web-Sprachen])
 neue Ära für Anwendungen und das Internet
28
X
M
L
Quellen
• XML 1.0 Spezifikation, DOM 2 Spezifikation
http://www.w3c.org
• SAX 2.0 Spezifikation
http://www.megginson.com/SAX/
• Java Parser-Implementierungen
siehe Folie 21
• Benchmarks
http://www.developerlife.com
• Tutorials
http://skew.org/xml
http://www.ibm.com/xml
• XML Quick Reference
http://www.mulberrytech.com
• Materialsammlung
http://www.inf.tu-dresden.de/~sf21
29