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