Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

60
Seminar: XML- Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

description

Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff. Agenda. XML-Grundlagen Parser APIs SAX – Simple API for XML DOM – Document Object Model StAX – Streaming API for XML Zusammenfassung XML-Anfragesprachen XPath XQuery Xcerpt Zusammenfassung. XML-Grundlagen. - PowerPoint PPT Presentation

Transcript of Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Page 1: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Seminar: XML-Verarbeitungskonzepte

WS 2007/2008

Sebastian Potthoff

Page 2: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Agenda

1. XML-Grundlagen2. Parser APIs

1. SAX – Simple API for XML2. DOM – Document Object Model3. StAX – Streaming API for XML4. Zusammenfassung

3. XML-Anfragesprachen1. XPath2. XQuery3. Xcerpt4. Zusammenfassung

Page 3: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

XML-Grundlagen

• Allgemein textuelle Darstellung bekannt• Beschreibung der Daten durch Tags• Strukturierung durch Schachtelung

• Wohlgeformtheit– Existenz eines Wurzelelements– Korrekte Folge von Start- und Endtags – Eindeutige Attributbezeichner innerhalb

eines Tags

Page 4: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

XML Infoset

• Abstrakte Sicht auf Daten• Infoset eines XML-Dokuments besteht

aus Informationseinheiten (information items)– Dokumentinformationseinheit– Elementinformationseinheit– Attributinformationseinheit – Kommentarinformationseinheit

Page 5: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Parser API

Page 6: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Parser API

Klassifikationsmerkmale:

• Pull- vs. Push-basierte Parser• Ein- vs. Mehrschritt-Parser

Page 7: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Pull-basierte Parser-Schnittstelle

• Applikation kontrolliert den Parse-Vorgang• Abruf einzelner Dokumentelemente durch die

Applikation

Pull-Parser Anwendung

Anfrage nach nächster Element

Liefert Element

Page 8: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Push-basierte Parser-Schnittstelle

• Parser kontrolliert den Parse-Vorgang• Parser benachrichtigt die Applikation mittels

Ereignissen • Ereignisse sind das Auftreten von

Informationseinheiten im Dokument

Push-Parser Anwendung

Ruft Callback-Methode

Page 9: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Einschritt- vs. Mehrschritt-Parser

Einschritt-Parser• Jedes Dokument wird in einem Schritt

verarbeitet

Mehrschritt-Parser• Das Dokument wird schrittweise

verarbeitet• Schritte durch den Parser bestimmt

Page 10: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

SAX – Simple API for XML

Page 11: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

SAX: Ereignisse

• ereignisorientierter Mehrschritt-Push-Parser• Parser arbeitet Quelldokument sequentiell ab • erzeugt dabei Ereignisse für die Informations

Einheiten des Dokuments– Geschachtelte Strukturen werden durch

Start- und End-Ereignisse signalisiert • startDocument, endDocument• startElement, endElement

Page 12: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

SAX: Signalisierung von Ereignissen an die Anwendung

• Callback-Methoden werden durch den Content-Handler der Applikation implementiert

• Content-Handler-Schnittstelle definiert Callback-Methoden für die versch. Ereignisse

• Der Parser ruft zu jedem Ereignis eine Callback-Methode auf

SAX Parser

<artikel> <author> Sebastian </author></artikel>

Content Handler

ContentHandler Interface

Parser

liest

Applikation

implementiert

Aufruf der Callback-Methoden

Page 13: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

SAX: Bewertung

Dokument wird nicht im Speicher gehalten+ Verarbeitung von großen Dokumenten

möglich- Wiederholter Zugriff auf bereits verarbeitete

Knoten nicht möglich- Ausschließlich lesender Zugriff

Page 14: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

DOM – Document Object Model

Page 15: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

DOM-Datenmodell

• Datenmodell beschreibt Daten als Knotenhierarchie in Form eines Baums

• Datenmodell ähnelt dem XML-Infoset. Terminologie weicht jedoch ab:– XML Infoset: Informationseinheiten

(information items) – DOM: Knoten (Nodes)

Page 16: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Beispiel

Mayer

buchshop

author

zeitschriftbuch

Document

preis

<buchshop> <buch preis=„10€“> <author>Mayer</author> <titel>XML</titel> </buch> <zeitschrift> <titel>Java</titel> </zeitschrift></buchshop> titel

XML

titel

Java

10€

Page 17: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

DOM: Funktionsweise

• DOM-Parser ist ein Einschritt-Pull-Parser

• Nach Parse-Vorgang steht vollständiges Dokument als Objektstruktur im Speicher bereit

• Für den Zugriff auf die Daten bietet die DOM API eine achsenorientierte Navigation

Page 18: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

DOM-Navigation

Achsenorientierte Navigation

Zusätzlich:Zugriff über Namen und Objektidentifizierer:• getElementByID(), getElementByTagName()

Kontext-knoten

firstChild

nextSiblingpreviousSibling

lastChild

parent

…childNodes

Page 19: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

DOM-Bewertung

- Resourcenverbrauch: Dokument wird vollständig im Speicher gehaltenVerarbeitung von großen

Dokumenten daher problematisch+ Wiederholter Zugriff auf das

Objektmodell möglich+ Modifikationen und Schreiben von XML-

Dokumente möglich

Page 20: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

StAX – Streaming API for XML

Page 21: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

StAX – Streaming API for XML

• Als jüngster Ansatz zum Parsen von XML-Daten vorgestellt (2004)

• Ereignisorientierte Parser meist als Push Parser umgesetzt

• Gründe für Pull-basierten Parser: – Verarbeitung, wenn Applikation bereit– Struktur des Codes entspricht Struktur des

XML-Dokuments– Zustandsverwaltung

• Ziel: ereignisorientierter Pull-Parser • seit Java 6 Teil der Java-Standardbibliothek

Page 22: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

StAX-Übersicht

• verbindet die Vorteile von SAX und DOM– Effizientes Arbeiten mit großen

Dokumenten– Schreiben/Erzeugen von XML-Dokumeten

• StAX gliedert sich in – Cursor-API– Iterator-API

Page 23: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Cursor-API

• logischer Cursor über einem Strom von XML-Elementen

• Auf dem Strom von Ereignissen wird mit denen aus dem Iterator-Interface bekannten Methoden navigiert

• In jedem von der Anwendung ausgelösten Schritt wird der Cursor von einem ereignisauslösenden Element zum Nächsten geschoben

• Cursor verwaltet Ereigniseigenschaften– ressourcensparend

• Ereignisauslösende Elemente: StartDocument, EndDokument, StartElement…

(vgl. SAX)

Page 24: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Beispiel

Auszug: liefert die Namen der Startelemente

while (parser.hasNext()) { int event = parser.next(); if (event == XMLStreamConstants.END_DOCUMENT) { parser.close(); break; } if (event == XMLStreamConstants.START_ELEMENT) { System.out.println(parser.getLocalName()); }}

Page 25: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Iterator-API

• Ereignisse und ihre Eigenschaften werden in Form von Ereignisobjekten an die Anwendung übergegeben

• Verwalten vieler Objekte steigert Ressourcenbedarf

• Objektorientierte Verarbeitung entspricht heutiger Programmentwicklung

• Navigation zwischen Ereignissen über Methoden des Iterator-Interface

Page 26: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Beispiel

Auszug: Suche nach einem Startelement eines ICON-Objekts

XMLEventReader reader = factory.createXMLEventReader(uri, input);

while (reader.hasNext()) { XMLEvent event = reader.peek(); if (event.isStartElement()) { StartElement start = event.asStartElement(); if (ICON.equals(start.getName())) { System.out.println(reader.getElementText()); break; } } reader.nextEvent(); }

Page 27: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Schreiben

• Cursor- und Iterator-API erlauben das Schreiben von Dokumenten

• Zentrale Klassen:– XMLStreamWriter– XMLEventWriter

Page 28: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Cursor-API

XMLStreamWriter writer = factory.createXMLStreamWriter( new FileOutputStream( "c:/party.xml" ));// Der XML-Header wird erzeugtwriter.writeStartDocument();

// Zuerst wird das Wurzelelement mit Attribut geschrieben writer.writeStartElement( "party" ); writer.writeAttribute( "datum", "31.12.01" ); // Unter dieses Element wird das Element gast mit einem Attribut erzeugt

writer.writeStartElement( "gast" ); writer.writeAttribute( "name", "Albert Angsthase" ); writer.writeEndElement(); writer.writeEndElement();writer.writeEndDocument();writer.close();

Page 29: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Iterator-API

XMLEventWriter writer = outputFactory.createXMLEventWriter(new FileOutputStream( "c:/party.xml" ));XMLEventFactory eventFactory = XMLEventFactory.newInstance();XMLEvent header = eventFactory.createStartDocument();XMLEvent startRoot = eventFactory.createStartElement( "", "", "party" );XMLEvent datumAttribut = eventFactory.createAttribute( "datum", "31.12.01" );XMLEvent endRoot = eventFactory.createEndElement( "", "", "party" );XMLEvent startGast = eventFactory.createStartElement( "", "", "gast" );XMLEvent name = eventFactory.createAttribute( "name", "Albert Angsthase" );XMLEvent endGast = eventFactory.createEndElement( "", "", "gast" );XMLEvent endDocument = eventFactory.createEndDocument();// Schreiben der Strukturwriter.add( header ); writer.add( startRoot ); writer.add(datumAttribut); writer.add( startGast ); writer.add( name ); writer.add( endGast ); writer.add( endRoot );writer.add( endDocument );writer.close();

Page 30: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Bewertung

• Dritte Variante auf das XML-Infoset zuzugreifen

+ Durch die verschiedenen API- Realisierungen flexiblerer Umgang

+ Je nach Wahl ähnlich performant wie SAX

+ Fähigkeit, Dokumente schreiben zu können

Page 31: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Zusammenfassung

Kriterium

SAX DOM StAX-

Cursor-API

StAX-Iterator-

API

Klassifikation Push-Mehrschritt

Pull-Einschritt

Pull-Mehrschritt

Pull-Mehrschritt

Wiederholter Zugriff

X X X

Eignung für

große Dokumente

++ - ++ +

Schreiben X

Page 32: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

XML-Anfragesprachen

Page 33: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

XML-Anfragesprachen

• Entwicklung von XML-Anfragesprachen zwischen 1996 und 1998 begonnen

• durch Internet- und Datenbank-Gemeinden beeinflusst

• Parallele Entwicklung verschiedener Sprachen mit navigierendem (XQL) und musterbasiertem (XML-QL) Ansatz

2007

2000

1999

1998

1997

1996

XQuery

QuiltXML-QL

XQL

XSLT Lorel

OQL

SQL

Xcerpt2004

Page 34: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

XPath

Page 35: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

XPath

• 1999 vom W3C vorgestellt• Grundlage für verschiedene W3C-

Standards zur Adressierung von Dokumentteilen

Page 36: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

XPath-Datenmodell

• Sequenz: geordnete Listen von Items, die Duplikate enthalten kann

• Knoten und atomare Werte als Sequenzeinträge– Repräsentieren Baumstruktur

Page 37: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Pfadausdrücke

• Adressiert Sequenzen von Knoten• Ein Pfadausdruck besteht aus beliebig

vielen Schritten, die durch Slashes „/“ getrennt werden

• Jeder Schritt besteht aus drei Bestandteilen:– Achse– Knotentest– Prädikat

Page 38: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Achsen

• Achse beschreibt die Navigations-richtung vom Kontextknoten aus

• Es gibt elf Achsen sowie Namensraum- und Attributachse– parent, ancestor, following-sibling…

Page 39: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Knotentest/Prädikate

• Knotentest

– Namentests (name test)

– Typtests (type test):

• Primäre Knotentyp (principle node kind)

• Spezifischer Knotentest

• Prädikate

– Selektion von Knoten, die das Prädikat erfüllen

Beispiel:

child::para[position()=1]

Page 40: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

XQuery

Page 41: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

XQuery

• 1998 began die Entwicklung durch eine Arbeitsgruppe der W3C

• Wichtige Randbedingung war Kompatibilität zu anderen Standards des W3C

• Pfadausdrücke (XPath) wichtiges Element

Page 42: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Die Sprache

• FLWR-Audrücke– FOR– LET– WHERE– RETURN

Beispiel:

for $i in document("data/items.xml")//itemlet $p := document("data/PO.xml")//powhere $i/itemno= $p//itemnoreturn

<ordered_item> {$i/description/text()} </ordered_item>

Page 43: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Was XQuery nicht ist und nicht kann

• Vorurteil: XQuery ist nicht performant genug um großen Datenmengen zu verarbeiten

• XQuery umfasst keinen Update- mechanismus

Page 44: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Musterbasierte Anfragesprachen

Page 45: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Musterbasierte Anfragesprachen

• Alternative zur verbreiteten achsenorientierten Adressierung Anfrage beschreibt an einem Beispiel (query-by-example), welche Daten ausgewertet werden sollen

• Sollen verständlicher sein

Beispiel:<address-book> <person> <name> <first>Mickey</first> <last>Mouse</last> </name> <phone>$PHONE</phone> <email>$EMAIL</email> </person></address-book>

Page 46: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Xcerpt

Page 47: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Xcerpt

• 2004 von einer Forschungsgruppe der LMU München vorgestellt

• Ziel: Verarbeitung verschiedener Arten von semistrukturierten Daten – format versatility– schema versatility – representational versatility

Page 48: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Xcerpt-Die Sprache

• Muster- / regelbasiert• Die Sprache gliedert sich in

– Datenterme– Anfrageterme– Konstruktionsterme

Page 49: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Xcerpt-Datenterme

• Datenterme:– Erlauben die Darstellung semistrukturierter

Daten– Bilden die Grundlage für Anfrageterme

• Datenterme bestehen aus:– Objektidentifikatoren– Opt. Namensraumdaten– Bezeichner– un- /geordneten Liste von Attributen oder

Subtermen• Geschweifete Klammer: ungeordnete Liste• Eckige Klammern: geordnete Liste

• Zu jedem Datenterm gibt es eine Graphdarstellung

Page 50: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Xcerpt-Graphdarstellung

address-book { &o1 @ person { name [ first [ "Mickey" ], last [ "Mouse" ] ], phone [ " 50773 "], knows [ ^&o2 ]}, &o2 @ person { name [ first [ "Donald" ], last [ "Duck" ] ], knows [ ^&o1 ] }}

Person[…]Person[…]

Name[…]

Last[…]First[…]

First[…] Last[…]

Name[…]

Phone[…]

Knows[…]

„50773“

Mickey Mouse Donald Duck

Knows[…]

Adress-book[...]

Page 51: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Xcerpt-Anfrageterme

• Dienen der Auswahl von Daten• Beschreiben dazu Muster, die mit Datentermen in

Beziehung gesetzt werden• Ergebnisse können an Variablen gebunden

werden• Unvollständige Anfragen bezüglich Tiefe und

Breite

Beispiel 1:report {{ desc section {{ title {{ "Data Terms" }} }}}}

Beispiel 2:students {{ student {{ name { var Name }, optional matrnr { var MatrNr } }}}}

Page 52: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Xcerpt-Anfragen

• Es ist möglich Anfrageterme durch AND und OR zu verknüpfen

Page 53: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Xcerpt-Graph Simulation

• Abbildung zwischen dem Anfragegraph und dem durch Datenterme definierten Graphen

• Abbildung führt zu Variablenbelegungen

A

B B

D E D E G

C B F

A

Page 54: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Konstruktionsterme

• Die aus Anfragen gebundenen Variablen werden neu angeordnet

• Konstruktion vollständiger Datentermen

Page 55: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Xcerpt-Beispiel: KonstruktionstermeMögliche Variablenbelegungen als Ergebnis einer Anfrage:1. Titel title { "Vikinga Blot" } Author author { last { "Ingelman-Sundberg" }, first { "Catharina" }}2. Titel title { "Folket i Birka pâ Vikingarnas Tid" } Author author { last { "Wahl" }, first { "Mats" }}

results{ all result{var title, var author}}

Liefert:

results { result { title { "Vikinga Blot" }, author { last { "Ingelman-Sundberg" }, […] } } result { title { "Folket i Birka pâ Vikingarnas Tid" }, author { last { "Wahl" }, first { "Mats" } } }}

results{ result{var title, var author}}

Liefert:

results { result { title { "Vikinga Blot" }, author { last { "Ingelman-Sundberg" }, […] } }}results { result { title { "Folket i Birka pâ Vikingarnas Tid" }, author { last { "Wahl" }, first { "Mats" } } }}

Page 56: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Xcerpt-Construct-Query-Rule

• Eine vollständige Anfrage hat die Form: CONSTRUCT

<construct term>

FROM

<query term>

END

Page 57: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Xcerpt-BeispielCONSTRUCT books-with-prices [ all book-with-prices [ title [ var T ], price-a [ var Pa ], price-b [ var Pb ] ] ]FROM and { in { resource [ "file:bib.xml" ], bib [[ book [[ title [ var T ], price [ var Pa ] ]] ]] }, in { resource [ "file:reviews.xml" ], reviews [[ entry [[ title [ var T ], price [ var Pb ] ]] ]] } }END

Page 58: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Xcerpt-Regelverkettung

• Es ist möglich Regeln zu verketten

• Anfragen können so übersichtlicher gestaltet werden

• Wiederverwendung von Elementen möglich

CONSTRUCT table [ tr [ td [ "Title" ], td [ "Price at A" ], td [ "Price at B" ] ], all tr [ td [ var Title], td [ var PriceA], td [ var PriceB] ] ]FROM books-with-prices [[ book-with-prices [[ title [[ var Title ]], price-a [[ var PriceA]], price-b [[ var PriceB]] ]] ]]END

Page 59: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Zusammenfassung

Kriterium XPath/XQuery XcerptNavigation achsenorientiert musterbasiert

Referenzielle Transparenz

-

Trennung zw. Anfrage und Konstruktion

X

Fähigkeit versch. Arten semistrukt. Daten zu verarbeiten

Über Erweiterungen

Verbreitung ++ -

Page 60: Seminar: XML-Verarbeitungskonzepte WS 2007/2008 Sebastian Potthoff

Danke für die Aufmerksamkeit

…sind noch Fragen?