XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN 1. Übung XML-Verarbeitung Agenda 2 Verarbeitung von XML Allgemein Darstellungsformen APIs & Bibliotheken Übungen Aufgabe 1 XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Verarbeitung von XML 3 Darstellungsformen für XML-Infoset API‘s & Bibliotheken Parser Sprachen Abfrage Veränderung Skripte XPath, XSLT, XQuery, … Speichern Repository DBMS XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Motivation – Parser, APIs, … 4 Welche Bestandteile können sinnvoll zurück gegeben werden? Nicht in XML-Empfehlung definiert Information Infoset Deserialisierung Serialisierung Validität Flexibilität Robustheit Modellüberführung Abstraktion XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Darstellungsformen für XML-Infoset 5 Ereignisbasiert Baumbasiert Daten-/Objektorientiert XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost 6 Darstellungsformen für XML-Infoset Beispiel <?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> … </bookstore> XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost 7 Darstellungsformen für XML-Infoset Ereignisbasiert XML-Dokument Verarbeitung der XML-Daten Veröffentlichen von Ereignissen Anwendung XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost 8 Darstellungsformen für XML-Infoset Ereignisbasiert XML-Dokument Verarbeitung der XML-Daten Veröffentlichen von Ereignissen Anwendung XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost 9 Darstellungsformen für XML-Infoset Ereignisbasiert XML-Dokument Verarbeitung der XML-Daten Veröffentlichen von Ereignissen Anwendung XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost 10 Darstellungsformen für XML-Infoset Ereignisbasiert XML-Dokument Verarbeitung der XML-Daten Veröffentlichen von Ereignissen Anwendung XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost 11 Darstellungsformen für XML-Infoset Ereignisbasiert XML-Dokument Verarbeitung der XML-Daten Veröffentlichen von Ereignissen Anwendung XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost 12 Darstellungsformen für XML-Infoset Ereignisbasiert XML-Dokument Verarbeitung der XML-Daten Veröffentlichen von Ereignissen Anwendung XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost 13 Darstellungsformen für XML-Infoset Baumbasiert XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost 14 Darstellungsformen für XML-Infoset Daten-/Objektorientiert XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost 15 Darstellungsformen für XML-Infoset Daten-/Objektorientiert Class title { string lang; string text; }; Class book { string category; title Title_1; author [] Author_1; }; XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost 16 APIs & Bibliotheken zur XMLVerarbeitung Vier Arten der Verarbeitung 1. Ereignisbasiertes Push 2. Ereignisbasiertes Pull 3. XMLPULL, CyberNeko, StAX Baum 4. SAX, XNI DOM, JDOM, dom4j, XOM, ElectricXML, etc. Datenbindung (Marshalling) Castor, Zeus, JAXB, JaxMe, etc. Quelle: http://www.xom.nu/whatswrong/img6.html XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost APIs zur XML-Verarbeitung 17 Push APIs Nur Lesezugriff Schnell Streamable Speicher-effizient Vollständig Von Grund auf korrekt Programme können sehr komplex und unbeherrschbar werden XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost APIs zur XML-Verarbeitung 18 Pull APIs Nur Lesezugriff Schnell Streamable Speicher-effizient In der Praxis werder vollständig noch korrekt Programme können sehr viel einfacher als SAX werden XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost APIs zur XML-Verarbeitung 19 Data Binding APIs Bildet XML-Dokumente auf Klassen ab Lese- und Schreibzugriff Erlaubt in-memory Manipulation Verbirgt XML-Details XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost APIs zur XML-Verarbeitung 20 Probleme mit Data Binding Annahmen: Dokumente besitzen Schema Dokumente sind valide Strukturen sind meist flach und nicht rekursiv Dokumentzentrierte (textlastige) Dokumente sind es nicht wert beachtet zu werden Gemischter Inhalt existiert nicht „Choices“ existieren nicht Reihenfolge spielt keine Rolle Sicht der Welt durch die Objekt-gefärbte Brille XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost APIs zur XML-Verarbeitung 21 Tree APIs Modellieren eines XML-Dokuments durch Verwenden von Klassen zum Abbilden von Knoten Komposition lässt einen Baum entstehen Lese- und Schreibzugriff Erlaubt in-memory Manipulation Die einfachste beliebige(arbitrary) XML-API XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost APIs zur XML-Verarbeitung 22 JAXB: Java Architecture for XML Binding definiert Mechanismus zum Schreiben von Java-Objekten als XML-Dokument (Marshalling) zum Erzeugen von Java-Objekten aus XML-Dokumenten (Unmarshalling) JAX-RPC: Java API for XML-based Remote Process Communications/Call definiert Mechanismus zum Austausch synchroner XML-Nachrichten als Remote Procedure Calls (z.B. für SOAP-RPC) JAXM : Java API for XML Messaging definiert Mechanismus zum Austausch asynchroner XML-Nachrichten (z.B. für SOAPDokumente und ebXML) XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost APIs zur XML-Verarbeitung 23 JAXR: Java API for XML Registries definiert Mechanismus zum Veröffentlichen verfügbarer Dienste in einer externen Registry zur Suche von Diensten in einer solchen Registry (z.B. für UDDI und ebXML Registry). XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost APIs zur XML-Verarbeitung 24 JAXP: Java API for XML Processing (Auch: Java API for XML Parsing) Einheitliche API für XML-Parser unter Java (stellt StandardSchnittstellen zum Parsen und Manipulieren von XMLDokumenten zur Verfügung) Umfasst DOM, SAX und XSLT und kann verschiedene XMLParser einbinden (über einen 'pluggability Layer') Ist ab J2SE 1.4 enthalten Project X Parser (von Sun in JAXP-Paket) Referenzimplementation eines Parsers nach dieser API Überlässt die Wahl des Parsers dem Programmierer Plugability Layer – zum Festlegen des zu benutzenden Parser Parser die JAXP-Schnittstellen entsprechen Apache Xercex-J Parser Project X Parser XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Bibliotheken zur XML-Verarbeitung 25 dom4j: DOM for Java Alternative/Erweiterung Features zu JDOM mit besonders vielen XML, XPath und XSLT unter Verwendung des Java Collections Framework Volle Unterstützung für DOM, SAX und JAXP. XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost SAX 26 Simple API for XML Programmierschnittstelle für verschiedene Programmiersprachen ist eine ereignisorientierte Methode zum Verarbeiten von XML (per DocumentHandler-Schnittstelle und registrierte Callbackfunktionen) bearbeitet/durchläuft das XML-Dokument sequenziell von oben nach unten Push Parser Verarbeitung sehr großer Dokumente möglich wird nicht im Hauptspeicher gehalten kein Object Model XML-Dokumente können nur gelesen aber nicht erzeugt werden schnell und einfach ideal für alle Anwendungen, die ein XML-Dokument nur einmal "durchlesen" sollen, beispielsweise um es anzuzeigen konkurriert mit DOM XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost StAX 27 Streaming API for XML JSR 173 (Java Specification Request) Pull-Parsing-Mechanismus dritte Darstellungsform von XML-Infoset durch XMLEvent-Klassenhierarchie als eine Liste von XMLEvent-Objekten (wiederverwendbar) XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost AXIOM 28 Axis Object Model API einfach und leichtgewichtig gestaltet Tiefe der Klassenhierarchie sowie Anzahl von Methoden und Attributen der Klassen möglichst gering gehalten XML-Infoset-konform Aufgeschobener oder verzögerter Aufbau (Engl.: deferred building) des Objektmodells nur auf Anforderung StAX-basiert SOAP-Optimierung - zusätzliche Schicht mit SOAP-spezifischen Modellklassen XOP/MTOM (Unterstützung binärer Daten) XPath - JAXEN als XPath Engine Quellen http://entwickler.de/zonen/portale/psecom,id,101,online,1195,.html XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost DOM 29 Document Object Model DOM Level 0 DOM Core (DOM-Kern) Bewegen im DOM-Baum Manipulation der Knoten Einfügen neuer Elemente Setzen von Attributen DOM Level 2 mittels JavaScript nutzbare Techniken zum Zugriff auf HTML-Dokumente DOM Level 1 W3C-Standard für Programmierschnittstelle für verschiedene Programmiersprachen DOM Core: u. a. Erweiterung um XML-Namensraum-Unterstützung DOM HTML, DOM Style, DOM CSS, DOM Views, DOM Events, DOM Traversal and Range DOM Level 3 DOM 3 Core: umfassende Erweiterung, u. a. verbesserte Ausnahmebehandlung und Umgang mit Zeichenkodierungen Load & Save Serialisierung von Dokumenten oder Dokumentteilen Parsen von XML-Dokumenten Versenden und Abrufen von XML-Dokumenten über HTTP wie mit XMLHttpRequest-Technik XPath, Events erweitert, Validation, Views und Formatting XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost DOM – Forts. 30 XML-Zugriff über einen Objektbaum komfortabler als SAX aber für größere Dokumente ungeeignet stellt Klassen, Schnittstellen und Methoden zur Verfügung, die eine hierarchische interne Darstellung eines XMLDokuments erlauben Objektbaum wird im Hauptspeicher gehalten XML-Dokumente können gelesen und erzeugt werden DOM-API bietet Möglichkeiten zum Zugriff und Verändern des Baums geeignet für interaktive Anwendungen DOM aufwendiger (nicht so effizient) wie SAX benötigt mehr Speicher als SAX konkurriert mit SAX XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost DOM – Forts. 31 Document Object Model zum Einsatz auf vielen verschiedenen Plattformen Spezifikation in der plattformunabhängigen Sparche IDL der Object Management Groupe (OMG) verfasst IDL: Interace Definition Language wird in der CORBA Spezifikation beschrieben DOM nur Vorlage, die erst für verschiedene Programmierumgebungen implementiert werden muss Für viele Sprachen wie z.B. Java, C++, Perl sind DOM Impementierungen frei verfügbar XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost DOM – Forts. 32 Document Object Model zum Einsatz auf vielen verschiedenen Plattformen Spezifikation in der plattformunabhängigen Sparche Genau auch das Problem! IDLhier derliegt Object Management Groupe (OMG) verfasst •Zuviele Details zu berücksichtigen IDL: Interace Definition Language •Dadurch zuin komplex wird der CORBA Spezifikation beschrieben •Zuunkonkret DOM nur Vorlage, die erst für verschiedene (keine Ausnutzung individueller Sprachfeatures möglich) Programmierumgebungen implementiert werden muss •Zur Verwendung muss man Experte in XML und DOM sein! Für viele Sprachen wie z.B. Java, C++, Perl sind DOM Impementierungen frei verfügbar XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost JDOM 33 Java-Bibliothek Bietet Programmierschnittstelle Erstellt einen an Java angepassten Objektbaum aus dem XML-Dokument Stellt Klassen, Schnittstellen und Methoden zur Verfügung, die eine hierarchische interne Darstellung eines XMLDokuments erlauben Objektbaum wird im Hauptspeicher gehalten API bietet Werkzeuge zum Zugriff und Verändern des Baums XML-Dokumente können gelesen und erzeugt werden XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost JDOM 34 Zum einfachen und effizienten Lesen, Verändern und Schreiben von XML mit Java Einfacher zu verwenden als DOM durch den Einsatz konkreter Klassen Interoperabilität durch XML, nicht durch die API Java API läuft lediglich auf einem System XML-Dokument muss portabel sein Viele Methoden für individuelle Funktionen Geeignet für interaktive Anwendungen Konkurriert mit DOM & SAX Integriert Bestandteile von DOM & SAX XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost JDOM 35 Kein Parser wie Xerces Verwendet XML Parser zum Verarbeiten von XMLDokumenten JDOM's SAXBuilder Klasse verwendet SAX Ereignisse eines XML-Parsers zum Erzeugen des JDOM-Baumes Standard-Parser von JDOM ist der JAXP-Parser Kann nahezu jeden Parser verwenden XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost JDOM - Links 36 JDOM – Homepage JDOM v1.0 API Specification http://www.jdom.org/ http://www.jdom.org/docs/apidocs/ Tutorial (XML, DOM, SAX, JAXP und JDOM mit Java) http://www.jdom.org/docs/oracle/jdom-part1.pdf http://www.torsten-horn.de/techdocs/java-xml.htm JDOM Tutorial http://www.torsten-horn.de/techdocs/java-xml.htm#Programmierbeispiele Model http://www.cafeconleche.org/books/xmljava/chapters/ch15.html XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost JDOM - Installation 37 JDOM-Paket downloaden http://www.jdom.org/dist/binary Entpacken & Pfad-Variablen setzen (Pfad-zumJDOM-Verzeichnis = PzJV): set Classpath= PzJV\jdom.jar;%CLASSPATH% export … XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost XOM 38 XOM (http://www.xom.nu/) Einfach gehaltene API Basiert auf Erfahrungen mit JDOM Akzeptiert und produziert nur wohl geformtes XML Duale streaming-/baumbasierte API Zugriff auf Dokumentteile bereits während des Parsens In-Memory-Modell Filtern der Informationen bereits beim Strukturaufbau Streaming Verarbeitung Gigabyte großer XML-Dokumente XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost XOM 39 Verwendet Xerces zum Parsen Unterstützung von Konvertierung von und nach SAX & DOM Java-Bibliothek Namespaces XPath XSLT XInclude xml:id Canonical XML java -classpath xom-samples.jar:xom-1.1.jar nu.xom.samples.PrettyPrinter filename.xml Artikel http://www.ibm.com/developerworks/library/x-matters32.html XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost XOM – Unterschiede zu JDOM 40 Eine gemeinsame Node Superklasse getValue Methode, welche XPath-Ergebnisse für jeden Knoten liefert toXML Methode, welche einen String zurückgibt der die XML-Serialisierung des Knoten enthält Kanonische Unterstützung von XML XInclude Streaming von Dokumenten, welche größer als der Hauptspeicher sind Well-formedness safe subclassing Bessere Unterstützung invalider Dokumente Validierung ohne Abweisen invalider Dokumente, … XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost XML-Parser 41 XML-Prozessoren Einlesen und Verarbeiten von XML-Dokumenten XML-Parser Modul eines XML-Prozessors zum Einlesen Zur Verfügung stellen der Informationen für eine darüber liegende Anwendung Implementierungen Xerces kann über JAXP verwendet werden SAX (Version 1&2) DOM (Level 1&2) Crimson, Gnome XML-Parser, … XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Übungen 42 ~drei bis vier ery XML-APIs XQ u Im-/ Exp mit D ort von XML aten b g anke n u n r e i ex n L-I d XM XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost 1. Übung - Aufgabenstellung 43 Darstellung und Manipulation von XML-Dokumenten mit (mind.) JDOM, XOM oder AXIOM Fragestellungen: Städte Griechenlands Wüsten, Berge, Flüsse Bevölkerungsdichte, Höhe, Koordinaten, Ausdehnung, … Drei-Länder-Ecks Quelle: Mondial Datenbank als aufbereitetes XMLDokument Quelle einlesen und XML-Dokument mit Antworten ausgeben Passende XML-DTD erzeugen und zuweisen XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost 1. Übung 44 Mondial (http://www.dbis.informatik.uni-goettingen.de/Mondial/) Datenbank mit geografischen Daten (Uni Göttingen) Verschiedene Formate Integration nach XML in Form einer Falluntersuchung zur Verwerndung des LoPiX Systems (Implementierung der XML XML Anfrage- und Datenmanipulationssprache XPathLog) Internetquellen CIA – The World Factbook ( https://www.cia.gov/library/publications/the-world-factbook/) Länderinformationen als html Statistiken Zusätzl. Textquellen für Koordinaten International Atlas von Kümmerly & Frey, Rand McNally und Westermann Geographische Daten der Karlsruher TERRA Datenbank XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Literaturangaben 45 http://www.w3.org http://www.w3.org/TR/2004/REC-xml-20040204/ http://www.w3.org/TR/xml-infoset/ http://www.schumacher-netz.de/TR/2001/REC-xml-infose http://www.w3.org/XML/Schema#dev http://www.w3.org/TR/xmlschema-0/ http://www.edition-w3c.de/TR/2001/REC-xmlschema-0http://www.w3.org/DOM/ XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Literaturangaben 46 http://www.xom.nu/whatswrong/img6.html http://xml.coverpages.org/xml.html http://www.jdom.org/ http://www.jdom.org/dist/binary http://www.jdom.org/docs/apidocs/ http://java.sun.com/xml/jaxp/dist/1.1/docs/tutorial/ove http://www.oracle.com/technology/oramag/oracle/02-s http://www.torsten-horn.de/techdocs/java-xml.htm https://www.cia.gov/library/publications/the-world-factb XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost