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