Hauptseminar Softwaretechnologie TU Dresden, SS 2001 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 L 2
X M L XML Was ist XML? XML = eXtensible Markup Language Meta-Sprache zum Erzeugen neuer Markup-Sprachen: L CML (Chemical Markup Language) MathML (Mathematical Markup Language) SMIL (Synchronized Multimedia Integration Language) ... 3
XML X Historie M 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 L SGML hatte 500 Seiten Regeln, für XML 70 Seiten Spezifikation: schlank SGML trennt schon strikt zwischen Daten und Repräsentation XML ist abgespeckte Version von SGML 4
X M L XML Charakteristik Trennung zwischen Daten und Sprachdefinition dynamische Tags Document Type Definition hierarchische Elementstruktur definiert Syntax der Daten XML DTD angelehnt an EBNF keine HTML-Unsitten: korrekte Schachtelung Tags schließen intern oder externe Datei ermöglicht phys. Datenverteilung HTML-Unsitten: Empty-Tags werden jetzt gekennzeichnet DTD mit regulären Ausdrücken phys. Datenverteilung durch Entities Syntax beschreibt gültige Tags valid well-formed 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 <!-- ... --> L HTML-Unsitten: Empty-Tags werden jetzt gekennzeichnet DTD mit regulären Ausdrücken phys. Datenverteilung durch Entities Syntax beschreibt gültige Tags 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 L 7
Beispiel – Versandhaus XML X Beispiel – Versandhaus M DTD definiert DTD-Entity bindet ein L orderlist.dtd product product.dtd validiert definiert XML-Entity XML shower bindet ein orderlist.xml showeraccessories.xml 8
Beispiel – Document Type Definition XML X Beispiel – Document Type Definition M orderlist.dtd L XML-Elemente oft gleich benannt Kollisionen bei mehreren XML-Dokumenten... product.dtd 9
Beispiel – XML-Dokument (1) ...Lösung: Namespaces (hier globaler Namensraum – aber auch elementeweise) L orderlist.xml 10
Beispiel – XML-Dokument (2) showeraccessories.xml L orderlist.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 L 12
X M L Java Parser Parser Parser XML-Datei 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 L 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, Namespace- Deklarationen, 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) L 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 L Parser, der den Kern implementiert, funktioniert. 17
X M L Java Parser DOM 2 – Core-Interfaces 18 Node – allgemeiner Knoten Document - Erzeugen von Knotenobjekten, Ändern des Dokuments Element – eigene Attribute verwalten und untergeordnete Elemente verwalten: viele Zugriffsmethoden CharacterData – Textmanipulation Attr – Name-Value-Paare 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) L DOM 3 mit Kopfzeilen-Infos: encoding, version, standalone 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 L 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 L 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 0.5 www.jclark.com/xml/ Lark Eigenbau 1.0 www.textuality.com/ Lark Larval Sun JAXP SAX2, DOM2 Core 1.1 sun.java.com Sun ProjectX SAX1, DOM1 TechRel 2 sun.java.com/xml Crimson SAX2, DOM2 1.1 (erweit. JAXP 1.1) L Aelfred und Lark sind klein für Applets auch C-Parser (Expat, ...) 22
DOM-Parser – Performance Java Parser X DOM-Parser – Performance M L 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 L 24
Beispiele X Crimson (1) M L 25
Beispiele X Crimson (2) M L 26
Beispiele X IBM XML4J M L 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 M L 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 M L 29