90
PRAKTIKUM ZUR VL NEUE KONZEPTE UND TECHNIKEN FÜR DATENBANKSYSTEME Humboldt-Universität zu Berlin Martin Kost

PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Embed Size (px)

Citation preview

Page 1: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

PRAKTIKUM ZUR VL

NEUE KONZEPTE UND

TECHNIKEN FÜR

DATENBANKSYSTEME

Humboldt-Universität zu Berlin

Martin Kost

Page 2: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Agenda

Verarbeitung von XML

Beispiel Aufgabenverteilung

Prozessieren von XML

Darstellungsformen/Modelle zur Verarbeitung von XML

APIs & Bibliotheken

Aufgabe 1

FOAF

Office XML

Aufgabenstellung

12.11.2008

2

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

Page 3: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLBeispiel Aufgabenverteilung

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

3

12.11.2008

Personen mit Fähigkeiten

XML-Quelldokument

Page 4: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLBeispiel Aufgabenverteilung

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

4

12.11.2008

Personen mit Fähigkeiten

XML-Quelldokument

<Personal>

<pers:Angestellte>

<pers:Angestellter Schlüssel="Angest-123">

<pers:Name>

<pers:Vorname>Heinz</pers:Vorname>

<pers:Nachname>Müller</pers:Nachname>

</pers:Name>

<pers:Referenz xsi:type="tAngestellterFähigkeit" Fähigkeit="Tellerwaschen"/>

</pers:Angestellter>

<pers:Angestellter Schlüssel="Angest-009">

<pers:Name>

<pers:Vorname>James</pers:Vorname>

<pers:Nachname>Mystery</pers:Nachname>

</pers:Name>

<pers:Referenz xsi:type="tAngestellterFähigkeit" Fähigkeit="Selbstverteidigung"/>

<pers:Referenz xsi:type="tAngestellterFähigkeit" Fähigkeit="ProfAutoFahren"/>

<pers:Referenz xsi:type="tAngestellterFähigkeit" Fähigkeit="ZehnFingerSystem"/>

</pers:Angestellter>

</pers:Angestellte>

</Personal>

Page 5: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLBeispiel Aufgabenverteilung

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

5

12.11.2008

Personen mit Fähigkeiten

Aufgaben mit benötigten Fähigkeiten

XML-Quelldokument

Page 6: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLBeispiel Aufgabenverteilung

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

6

12.11.2008

Personen mit Fähigkeiten

Aufgaben mit benötigten Fähigkeiten

XML-Quelldokument

<Aufgaben>

<aufg:Aufgabe Schlüssel="Aufg-234">

<aufg:Bezeichnung>Tellerputzer in der Kantine</aufg:Bezeichnung>

<aufg:Referenz xsi:type="tAufgabeFähigkeit" Fähigkeit="Tellerwaschen"/>

</aufg:Aufgabe>

<aufg:Aufgabe Schlüssel="Aufg-2345">

<aufg:Bezeichnung>gespielter Geheimagent</aufg:Bezeichnung>

<aufg:Referenz xsi:type="tAufgabeFähigkeit" Fähigkeit="Selbstverteidigung"/>

<aufg:Referenz xsi:type="tAufgabeFähigkeit" Fähigkeit="ProfAutoFahren"/>

</aufg:Aufgabe>

</Aufgaben>

Page 7: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLBeispiel Aufgabenverteilung

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

7

12.11.2008

Personen mit Fähigkeiten

Aufgaben mit benötigten Fähigkeiten

Beschreibung von Fähigkeiten

XML-Quelldokument

Page 8: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLBeispiel Aufgabenverteilung

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

8

12.11.2008

Personen mit Fähigkeiten

Aufgaben mit benötigten Fähigkeiten

Beschreibung von Fähigkeiten

XML-Quelldokument

<Fähigkeiten>

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.</faeh:Beschreibung>

</faeh:Fähigkeit>

<faeh:Fähigkeit Schlüssel="ZehnFingerSystem">

<faeh:Beschreibung>Schreibt ganz schnell mit einer Tastatur.</faeh:Beschreibung>

</faeh:Fähigkeit>

<faeh:Fähigkeit Schlüssel="Selbstverteidigung">

<faeh:Beschreibung>Rettet sich aus jeder Gefahr.</faeh:Beschreibung>

</faeh:Fähigkeit>

<faeh:Fähigkeit Schlüssel="ProfAutoFahren">

<faeh:Beschreibung>Fährt wie ein Profi Auto.</faeh:Beschreibung>

</faeh:Fähigkeit>

</Fähigkeiten>

Page 9: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLBeispiel Aufgabenverteilung

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

9

12.11.2008

Personen mit Fähigkeiten

Aufgaben mit benötigten Fähigkeiten

Beschreibung von Fähigkeiten

XML-Quelldokument

Zuordnungen von Personen zu Aufgaben

Page 10: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLBeispiel Aufgabenverteilung

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

10

12.11.2008

Personen mit Fähigkeiten

Aufgaben mit benötigten Fähigkeiten

Beschreibung von Fähigkeiten

XML-Quelldokument

Zuordnungen von Personen zu Aufgaben<Zuordnungen>

<Zuordnung Angestellter="Angest-123" Aufgabe="Aufg-234"/>

<Zuordnung Angestellter="Angest-007" Aufgabe="Aufg-2345"/>

</Zuordnungen>

Page 11: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLBeispiel Aufgabenverteilung

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

11

12.11.2008

Personen mit Fähigkeiten

Aufgaben mit benötigten Fähigkeiten

Beschreibung von FähigkeitenAufgabenzuweisung für

Angestellte

XML-Quelldokument XML-Zieldokument

Verarbeitungsprozess

Zuordnungen von Personen zu Aufgaben

Page 12: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLBeispiel Aufgabenverteilung

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

12

12.11.2008

Personen mit Fähigkeiten

Aufgaben mit benötigten Fähigkeiten

Beschreibung von FähigkeitenAufgabenzuweisung für

Angestellte

XML-Quelldokument XML-Zieldokument

Verarbeitungsprozess

Zuordnungen von Personen zu Aufgaben

<Angestellte>

<pers:Angestellter xmlns:pers="http://www.example.com/Personal" Schlüssel="Angest-123">

<pers:Name>

<pers:Vorname>Heinz</pers:Vorname>

<pers:Nachname>Müller</pers:Nachname>

</pers:Name>

<faeh:Fähigkeit xmlns:faeh="http://www.example.com/Faehigkeiten" Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.</faeh:Beschreibung>

</faeh:Fähigkeit>

<aufg:Aufgabe xmlns:aufg="http://www.example.com/Aufgaben" Schlüssel="Aufg-234">

<aufg:Bezeichnung>Tellerputzer in der Kantine</aufg:Bezeichnung>

</aufg:Aufgabe>

</pers:Angestellter>

Page 13: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLBeispiel Aufgabenverteilung

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

13

12.11.2008

Personen mit Fähigkeiten

Aufgaben mit benötigten Fähigkeiten

Beschreibung von FähigkeitenAufgabenzuweisung für

Angestellte

XML-Quelldokument XML-Zieldokument

Verarbeitungsprozess

Zuordnungen von Personen zu Aufgaben

<pers:Angestellter xmlns:pers="http://www.example.com/Personal" Schlüssel="Angest-009">

<pers:Name>

<pers:Vorname>James</pers:Vorname>

<pers:Nachname>Mystery</pers:Nachname>

</pers:Name>

<faeh:Fähigkeit xmlns:faeh="http://www.example.com/Faehigkeiten" Schlüssel="Selbstverteidigung">

<faeh:Beschreibung>Rettet sich aus jeder Gefahr.</faeh:Beschreibung>

</faeh:Fähigkeit>

<faeh:Fähigkeit xmlns:faeh="http://www.example.com/Faehigkeiten" Schlüssel="ProfAutoFahren">

<faeh:Beschreibung>Fährt wie ein Profi Auto.</faeh:Beschreibung>

</faeh:Fähigkeit>

<faeh:Fähigkeit xmlns:faeh="http://www.example.com/Faehigkeiten" Schlüssel="ZehnFingerSystem">

<faeh:Beschreibung>Schreibt ganz schnell mit einer Tastatur.</faeh:Beschreibung>

</faeh:Fähigkeit>

</pers:Angestellter>

</Angestellte>

Page 14: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLBeispiel Aufgabenverteilung

Quelle: Dokument (AufgabenPersonenZuordnung.xml) mit

Beschreibung von Personen und Verweis auf deren Fähigkeiten

Beschreibung von Aufgaben und Verweis auf benötigte Fähigkeiten

Beschreibung von Fähigkeiten

Zuordnungen von Personen zu Aufgaben

Gewünschtes Ergebnis ist ein Dokument (Aufgabenverteilung.xml), welches alle Angestellten und mit deren zugeordneten Aufgaben auflistet:

Ein Wurzelelement Angestellte wird erzeugt

Die Elemente Angestellter werden extrahiert

Über die Verweise durch das Element Referenz mit dessen Attribut Fähigkeit werden den extrahierten Elementen Angestellter die referenzierten Elemente Fähigkeit hinzugefügt

Die Elemente Referenz werden nicht extrahiert

Den Angestellten (extrahierte Elemente Angestellter) sollen die zugewiesen Aufgaben (als Elemente Aufgabe) (referenziert über die Zuordnungen) als Inhalt hinzugefügt werden

Die Abfragen sollen auf Basis der Schlüssel arbeiten.

Prozess: Quelle einlesen und XML-Dokument mit Antworten ausgeben

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

15

Page 15: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLper Quellcode

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

16

12.11.2008

reply=queryExternService(Service, keyword);

Ergebnis = 0;

if (reply.length()>0)

{

int StartResult = reply.find("<opensearch:totalResults>");

if (StartResult != string::npos)

{

int EndResult = reply.find("</opensearch:totalResults>", StartResult);

if (EndResult != string::npos)

{

if (GeneralTypeOps::strtoint(reply.substr(StartResult + 25, EndResult -

1), Ergebnis));

}

}

if (Ergebnis > 0)

{

if (keywordList.length()>0)

keywordList+="%20";

keywordList+=keyword;

Page 16: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLper Quellcode

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

17

12.11.2008

reply=queryExternService(Service, keyword);

Ergebnis = 0;

if (reply.length()>0)

{

int StartResult = reply.find("<opensearch:totalResults>");

if (StartResult != string::npos)

{

int EndResult = reply.find("</opensearch:totalResults>", StartResult);

if (EndResult != string::npos)

{

if (GeneralTypeOps::strtoint(reply.substr(StartResult + 25, EndResult -

1), Ergebnis));

}

}

if (Ergebnis > 0)

{

if (keywordList.length()>0)

keywordList+="%20";

keywordList+=keyword;

reply=queryExternService(Service, keyword);

Ergebnis = 0;

if (reply.length()>0)

{

int StartResult = reply.find("<opensearch:totalResults>");

if (StartResult != string::npos)

{

int EndResult = reply.find("</opensearch:totalResults>", StartResult);

if (EndResult != string::npos)

{

if (GeneralTypeOps::strtoint(reply.substr(StartResult + 25, EndResult - 1), Ergebnis));

}

}

if (Ergebnis > 0)

{

if (keywordList.length()>0)

keywordList+="%20";

keywordList+=keyword;

Page 17: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLEinsatz von Parsern und Bibliotheken

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

18

12.11.2008

Page 18: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Motivation für APIs, Parser & Bibliotheken

Welche Bestandteile eines XML-Dokuments 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

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

19

12.11.2008

Page 19: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLMöglichkeiten der Verarbeitung

API„s, Parser & Bibliotheken

Sprachen

Abfrage

Veränderung

Skripte (Transformationen)

XPath, XSLT, XQuery, …

Speichern

Repository

DBMS

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

20

12.11.2008

Page 20: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLMöglichkeiten der Verarbeitung

Entwickler müssen operationale Kriterien und Performanzeigenschaften bei der Verarbeitung von XML berücksichtigen.

Was heißt Verarbeitung von XML?

Welche Komponenten spielen eine Rolle?

Welche Anforderungen ergeben sich aus (der Analyse) der umzusetzenden Anwendung?

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

21

12.11.2008

Page 21: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML XML-Parser

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, …

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

22

Page 22: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLProzessieren von XML in vier Stufen

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

23

Parsen Zugriff Modifikation Serialisierung

XML-Eingabedokument XML-Ausgabedokument

Zeichen-

konvertierung

Lexikalische

Analyse (FSM)

Syntaktische

Analyse (PDA)

Semantische

Analyse

API

unabhängig von den verschiedenen Parse-Modellen

variiert zwischen Parse-Modellen

Bit-Strom(UTF-8/16, LE/BE,z.B. 3C 63 3E)

Zeichen-Strom(z.B. 003C 0063 003E =′<′ ′c′ ′>′)

Token-Strom(z.B. ′<c>′ ′Hallo′ ′</c>′)

Datenstruktur (Parse-Modell- abhängig)(z.B. Bäume, Ereignisse, integer arrays)

Umsetzung durch die Anwendung

Page 23: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XMLProzessieren von XML in vier Stufen

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

24

Parsen Zugriff Modifikation Serialisierung

XML-Eingabedokument XML-Ausgabedokument

Zeichen-

konvertierung

Lexikalische

Analyse (FSM)

Syntaktische

Analyse (PDA)

Semantische

Analyse

API

unabhängig von den verschiedenen Parse-Modellen

variiert zwischen Parse-Modellen

Bit-Strom(UTF-8/16, LE/BE,z.B. 3C 63 3E)

Zeichen-Strom(z.B. 003C 0063 003E =′<′ ′c′ ′>′)

Token-Strom(z.B. ′<c>′ ′Hallo′ ′</c>′)

Datenstruktur (Parse-Modell- abhängig)(z.B. Bäume, Ereignisse, integer arrays)

Umsetzung durch die Anwendung

Syntaktische Analyse (PDA):

• Überprüfung des

Eingabedokuments auf

Wohlgeformtheit und

• Validierung gegen ein

Schema

Page 24: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset

Ereignisbasiert

Baumbasiert

Daten-/Objektorientiert

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

25

12.11.2008

Page 25: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset

Vier Arten/Methoden der Verarbeitung

Ereignisbasiertes Push

SAX, XNI

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

26

Page 26: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

27

Page 27: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

28

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.

</faeh:Beschreibung> …

Page 28: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

29

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.

</faeh:Beschreibung> …

Start Element: <Fähigkeit>

Page 29: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

30

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.

</faeh:Beschreibung> …

Start Elementname: Fähigkeit

Page 30: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

31

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.

</faeh:Beschreibung> …

Start Elementname: Fähigkeit

Page 31: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

32

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.

</faeh:Beschreibung> …

Attributname: Schlüssel

Page 32: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

33

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.

</faeh:Beschreibung> …

Attributname: Schlüssel

Page 33: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

34

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.

</faeh:Beschreibung> …

Attributwert: Tellerwaschen

Page 34: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

35

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.

</faeh:Beschreibung> …

Attributwert: Tellerwaschen

Page 35: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

36

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.

</faeh:Beschreibung> …

Start Element: <Beschreibung>

Page 36: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

38

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.

</faeh:Beschreibung> …

Start Element: <Beschreibung>

Start Element: Beschreibung

NS-url: http://www.example.com/Faehigkeiten

l_name: Beschreibung

attList: null

q_name: http://www.example.com/Faehigkeiten:Beschreibung

Page 37: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

39

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.

</faeh:Beschreibung> …

Start Element: <Beschreibung>

Page 38: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

40

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.

</faeh:Beschreibung> …

Start Elementname: Beschreibung

Page 39: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

41

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.

</faeh:Beschreibung> …

Start Elementname: Beschreibung

Page 40: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

42

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.

</faeh:Beschreibung> …

Text: Wäscht …

Page 41: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

43

<faeh:Fähigkeit Schlüssel="Tellerwaschen">

<faeh:Beschreibung>Wäscht super schnell Teller.

</faeh:Beschreibung> …

Text: Wäscht …

Page 42: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

Push APIs Beispieltoken: Startelement, Endelement, Text, Start von

Elementnamen, Attributname, Attributwert, …

Nur Lesezugriff

Schnell

Streamable

Speicher-effizient

Vollständig

Von Grund auf korrekt

Programme können sehr komplex und unbeherrschbar werden

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

44

12.11.2008

Page 43: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

Simple API for XML (SAX)

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

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

45

Page 44: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset

Vier Arten der Verarbeitung

Ereignisbasiertes Push

SAX, XNI

Ereignisbasiertes Pull

XMLPULL, CyberNeko, StAX

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

46

Page 45: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

Pull APIs

Nur Lesezugriff

Schnell

Streamable

Speicher-effizient

In der Praxis weder vollständig noch korrekt

Programme können sehr viel einfacher als bei der

Verwendung von Push APIs wie SAX werden

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

47

Page 46: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

Streaming API for XML (StAX)

JSR 173 (Java Specification Request)

Pull-Parsing-Mechanismus

dritte Darstellungsform von XML-Infoset

durch XMLEvent-Klassenhierarchie als eine Liste von

XMLEvent-Objekten (wiederverwendbar)

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

48

Page 47: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert

Axis Object Model (AXIOM)

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

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

49

Page 48: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset

Vier Arten der Verarbeitung

Ereignisbasiertes Push

SAX, XNI

Ereignisbasiertes Pull

XMLPULL, CyberNeko, StAX

Baum

DOM, JDOM, dom4j, XOM, ElectricXML, etc.

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

50

Page 49: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

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

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

51

Page 50: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

52

Wurzel-Element:

Personal

Text:

Heinz

Element:

Angestellte

Element:

Angestellter

Attribut:

“Schlüssel“

Element:

Name

Element:

Vorname

Element:

Nachname

Text:

Müller

Element:

Referenz

Attribut:

“Fähigkeit“

Page 51: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

53

Wurzel-Element:

Personal

Text:

Heinz

Element:

Angestellte

Element:

Angestellter

Attribut:

“Schlüssel“

Element:

Name

Element:

Vorname

Element:

Nachname

Text:

Müller

Element:

Referenz

Attribut:

“Fähigkeit“

Element name: NameattributeList: null

namespace: http://www.example.com/Personal

Node object Angestellter

null Referenz

Vorname Nachname

Page 52: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

Document Object Model (DOM)

W3C-Standard für Programmierschnittstelle für verschiedene Programmiersprachen

DOM Level 0

mittels JavaScript nutzbare Techniken zum Zugriff auf HTML-Dokumente

DOM Level 1

DOM Core (DOM-Kern)

Bewegen im DOM-Baum

Manipulation der Knoten

Einfügen neuer Elemente

Setzen von Attributen

DOM Level 2

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

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

55

Page 53: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

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 XML-Dokuments 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

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

56

Page 54: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

Document Object Model (DOM)

zum Einsatz auf vielen verschiedenen Plattformen -Spezifikation in der plattformunabhängigen SparcheIDL 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

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

57

12.11.2008

Page 55: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

Document Object Model (DOM)

zum Einsatz auf vielen verschiedenen Plattformen -Spezifikation in der plattformunabhängigen SparcheIDL 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

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

58

Genau hier liegt auch das Problem!•Zu viele Details zu berücksichtigen•Dadurch zu komplex•Zu unkonkret

(keine Ausnutzung individueller Sprachfeatures möglich)•Zur Verwendung muss man Experte in XML und DOM sein!

12.11.2008

Page 56: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

JDOM – 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 XML-Dokuments erlauben

Objektbaum wird im Hauptspeicher gehalten

API bietet Werkzeuge zum Zugriff und Verändern des Baums

XML-Dokumente können gelesen und erzeugt werden

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

59

Page 57: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

JDOM: 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

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

60

Page 58: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

JDOM-Bibliothek: kein Parser wie Xerces

Verwendet XML Parser zum Verarbeiten von XML-

Dokumenten

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

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

61

Page 59: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

Document docQuelle = saxBuilder.build( new File( args[0] ) );

Element eQuellWurzel = docQuelle.getRootElement();

// Angestellte suchen

Iterator iAngestellteOriginal = eQuellWurzel.getDescendants( new ElementFilter("Angestellter") );

for (; iAngestellteOriginal.hasNext(); )

{

Element eAngestellterOriginal = (Element) iAngestellteOriginal.next();

if( null == eAngestellterOriginal ) continue;

Element eAngestellter = (Element)eAngestellterOriginal.clone();

// Verweise/Referenzen auf Fähigkeiten suchen

Iterator iRefrenzenOriginal = eAngestellterOriginal.getDescendants( newElementFilter("Referenz") );

for (; iRefrenzenOriginal.hasNext(); )

{

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

62

Page 60: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

JDOM – Homepage

http://www.jdom.org/

JDOM v1.0 API Specification

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-JDOM

Model

http://www.cafeconleche.org/books/xmljava/chapters/ch15.html

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

63

Page 61: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

JDOM-Paket downloaden

http://www.jdom.org/dist/binary

Entpacken & Pfad-Variablen setzen (Pfad-zum-

JDOM-Verzeichnis = PzJV): set Classpath= PzJV\jdom.jar;%CLASSPATH%

export …

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

64

Page 62: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

dom4j: DOM for Java

Alternative/Erweiterung zu JDOM mit besonders vielen

Features

XML, XPath und XSLT unter Verwendung des Java Collections

Framework

Volle Unterstützung für DOM, SAX und JAXP.

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

65

Page 63: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

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

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

66

Page 64: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Baumbasiert

XOM verwendet Xerces zum Parsen

Unterstützung von

Namespaces

XPath

XSLT

XInclude

xml:id

Canonical XML

Konvertierung von und nach SAX & DOM

Java-Bibliothek

java -classpath xom-samples.jar:xom-1.1.jar nu.xom.samples.PrettyPrinterfilename.xml

Artikel

http://www.ibm.com/developerworks/library/x-matters32.html

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

67

Page 65: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML XOM – Unterschiede zu JDOM

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 derHauptspeicher sind

Well-formedness safe subclassing

Bessere Unterstützung invalider Dokumente

Validierung ohne Abweisen invalider Dokumente, …

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

68

Page 66: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – XOM Beispiel (1)

public static void main(String[] args) {

String url = "http://www.spiegel.de/schlagzeilen

/rss/0,5291,273,00.xml";

Builder parser = new Builder();

// Parsen des Dokuments

Document document = parser.build(url);

Element oldRoot = document.getRootElement();

Element newRoot = new Element("linkset");

Elements toplevel = oldRoot.getChildElements();

for (int i = 0; i < toplevel.size(); i++) {

Element element = toplevel.get(i);

Element link = element.getFirstChildElement("link", "http://www.spiegel.de/unispiegel/0,1518,,00.html");

link.detach();

newRoot.appendChild(link);

}

System.out.println(newRoot.toXML());

} // Ende der main-Funktion

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

69

<?xml version="1.0" encoding="iso-8859-1"?>

<rss version="0.91">

<channel>

<title>SPIEGEL ONLINE - UniSPIEGEL</title>

<link>http://www.spiegel.de/unispiegel/0,1

518,,00.html</link>

<description>Schneller wissen, was wichtig

ist</description>

<language>de</language>

Page 67: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – XOM Beispiel (2)

public static void main(String[] args) {

Builder parser = new Builder();

// Parsen des Dokuments

Document document = parser.build(args[0]);

Element oldRoot = document.getRootElement();

Element newRoot = new Element("linkset");

Document newDoc = new Document(newRoot);

OutputStream out = new FileOutputStream(“links.xml");

out = new BufferedOutputStream(out);

Serializer serializer = new Serializer(out, "ISO-8859-1");

serializer.write(newDoc);

} // Ende der main-Funktion

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

70

Page 68: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset

Vier Arten der Verarbeitung

Ereignisbasiertes Push

SAX, XNI

Ereignisbasiertes Pull

XMLPULL, CyberNeko, StAX

Baum

DOM, JDOM, dom4j, XOM, ElectricXML, etc.

Datenbindung (Marshalling)

Castor, Zeus, JAXB, JaxMe, etc.

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

71

Page 69: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Datenorientiert

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

72

Page 70: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Datenorientiert

Class Vorname

{

string Text;

};

Class Name

{

Vorname vorname_1;

Name name_1;

};

Class Angestellter

{

string Schlüssel;

Name name_1;

Referenz referenz_1

};

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

73

Page 71: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Datenorientiert

Data Binding APIs Bildet XML-Dokumente auf Klassen ab

Lese- und Schreibzugriff

Erlaubt in-memory Manipulation

Verbirgt XML-Details

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

74

12.11.2008

Page 72: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Datenorientiert

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

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

75

Page 73: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Tokenindexierung

Virtual Token Discriptor (VTD)

Verwendung von 64-Bit integer-arrays

VTD-record (Positionen der Token im Originaldokument)

location caches (parent-, child-, sibling-Beziehungen

zwischen Token)

Originaldokument bleibt erhalten

Lange Lebenszeit der strukturierten Daten

Vermeidet Mehraufwand der Objekterzeugung

http://vtd-xml.sourceforge.net

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

76

Page 74: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Modelle für das XML-Infoset – Vergleich

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

77

Personal

Heinz

Angestellte

Angestellter“Schlüssel“

Name

Vorname Nachname

Müller

Referenz

start document

start element: Fähigkeit

attribute: Schlüssel

start element: Beschreibung

character: Wäscht …

end element: Beschreibung

end document

DOM: Baumobjekt

Lebenszeit: Lang Objekt: Ja

SAX/StAX: Ereignisse

Lebenszeit: Kurz Objekt: Nein

Class Vorname

{

string Text;

};

Class Name

{

Vorname vorname_1;

Name name_1;

};

Class Angestellter

{

Data Streaming: Klassen

Lebenszeit: Lang Objekt: Ja

Page 75: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Parser-Anwendungs-Interaktion

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

78

Loop

// Kommuniziert mit Tokenizer

// Erzeugt die Datenstrukturen

// Datenstrukturen vollständig

erzeugt

// Bereit für den Zugriff durch

die Anwendung

Parser

// Navigieren über die

Datenstrukturen

Anwendung (Zugriff)

Loop// Aufruf von nextEvent()

// Überprüfen des Ereignistyps

// Aufruf der “callback” Funktion

------------------------------------------------------

Event nextEvent() {

// Kommuniziert mit Tokenizer

// Erzeugt Ereignis durch Klassifizierung

// Erzeugt Objekte für Token

// Rückgabe des Ereignisses

}

Push Parser

”Callback” FunktionenstartELement(…) {

// Verarbeite das Ereignis

return;

}

Event nextEvent() {

// Kommuniziert mit Tokenizer

// Erzeugt Ereignis durch

Klassifizierung

// Erzeugt Objekte für Token

// Rückgabe des Ereignisses

}

Pull Parser

Loop

// Aufruf von nextEvent()

// Überprüfen des Ereignistyps

// Verarbeite das Ereignis

Zugriff ermöglicht Aufruf entspr. “callback” Funkt. Antwort

Aufruf von

nextEvent()

Rückgabe des

Ereignisses

Page 76: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Weitere APIs & Bibliotheken

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 ProcessCommunications/Call

definiert Mechanismus

zum Austausch synchroner XML-Nachrichten als Remote ProcedureCalls (z.B. für SOAP-RPC)

JAXM : Java API for XML Messaging

definiert Mechanismus

zum Austausch asynchroner XML-Nachrichten (z.B. für SOAP-Dokumente und ebXML)

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

79

Page 77: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Weitere APIs & Bibliotheken

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).

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

80

Page 78: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Weitere APIs & Bibliotheken

JAXP: Java API for XML Processing (Auch: Java API for XML Parsing)

Einheitliche API für XML-Parser unter Java (stellt Standard-Schnittstellen zum Parsen und Manipulieren von XML-Dokumenten zur Verfügung)

Umfasst DOM, SAX und XSLT und kann verschiedene XML-Parser 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

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

81

Page 79: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Verarbeitung von XML Weitere APIs & Bibliotheken

libxml (2), xmlwrapp für C++

Visual Studio Bibliotheken (.Net)

12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

82

Page 80: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Übungen

~fünf

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

83

XML-Parsing

12.11.2008

Page 81: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

1. Übung

Friend Of A Friend (FOAF)

Menschen und ihre Beziehungen untereinander maschinen-verständlich (≠ maschinen-lesbar) machen.

Eigene Stammdaten erfassen

Liste mit Verwandten, Freunden, Kollegen und Kontakten erstellen

Im Internet veröffentlichen Ich und meine Beziehungen werden durchsuchbar

Basiert auf RDF/XML mit speziellem Vokabular (wie z.B. RSS 2.0)

Automatische Verarbeitung der Inhalte; z.B. Adresse Verknüpfung mit Karte/Navigation

Diverse Werkzeuge bereits vorhanden

Verwendung in sozialen Netzwerken

http://www.w3.org/RDF/Validator/

http://www.foaf-project.org/ http://xmlns.com/foaf/spec/

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

84

12.11.2008

Page 82: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

1. Übung

Friend Of A Friend (FOAF)

Menschen und ihre Beziehungen untereinander maschinen-verständlich (≠ maschinen-lesbar) machen.

Eigene Stammdaten erfassen

Liste mit Verwandten, Freunden, Kollegen und Kontakten erstellen

Im Internet veröffentlichen Ich und meine Beziehungen werden durchsuchbar

Basiert auf RDF/XML mit speziellem Vokabular (wie z.B. RSS 2.0)

Automatische Verarbeitung der Inhalte; z.B. Adresse Verknüpfung mit Karte/Navigation

Diverse Werkzeuge bereits vorhanden

Verwendung in sozialen Netzwerken

http://www.w3.org/RDF/Validator/

http://www.foaf-project.org/ http://xmlns.com/foaf/spec/

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

85

12.11.2008

<foaf:Person rdf:about="http://www.example.org/~heinzi/">

<foaf:name>Heinz Müller</foaf:name>

<foaf:title>Herr</foaf:title>

<foaf:givenname>Heinz</foaf:givenname>

<foaf:family_name>Müller</foaf:family_name>

<foaf:gender>male</foaf:gender>

<foaf:nick>Heinzi</foaf:nick>

<!--<foaf:mbox rdf:resource="mailto:[email protected]"/>-->

<foaf:mbox_sha1sum>

b62f43717e01cb0dba02e2485f15228ee08fc0fc</foaf:mbox_sha1sum>

<foaf:homepage rdf:resource="http://www.example.org/~heinzi/"/>

<foaf:phone rdf:resource="tel:0123456789"/>

<foaf:workplaceHomepage rdf:resource="http://www.mensageschirr.example.com"/>

<foaf:schoolHomepage

rdf:resource="http://www.example.com/schulen/gesamtschuleXY/"/>

Page 83: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

1. Übung

Friend Of A Friend (FOAF)

Menschen und ihre Beziehungen untereinander maschinen-verständlich (≠ maschinen-lesbar) machen.

Eigene Stammdaten erfassen

Liste mit Verwandten, Freunden, Kollegen und Kontakten erstellen

Im Internet veröffentlichen Ich und meine Beziehungen werden durchsuchbar

Basiert auf RDF/XML mit speziellem Vokabular (wie z.B. RSS 2.0)

Automatische Verarbeitung der Inhalte; z.B. Adresse Verknüpfung mit Karte/Navigation

Diverse Werkzeuge bereits vorhanden

Verwendung in sozialen Netzwerken

http://www.w3.org/RDF/Validator/

http://www.foaf-project.org/ http://xmlns.com/foaf/spec/

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

86

12.11.2008

<foaf:knows>

<foaf:Person>

<foaf:name>James Mystery</foaf:name>

<foaf:mbox_sha1sum>

91b9e2e77fe5a8e72fea1f647352cc44d6cbd4ee</foaf:mbox_sha1sum>

<!-- <foaf:mbox rdf:resource="mailto:[email protected]"/>-->

</foaf:Person>

</foaf:knows>

<foaf:interest>

<rdf:Description rdf:about="http://www.example.org/qualification/TellerWaschen">

<dc:title>Ausbildung im Teller waschen</dc:title>

<rdfs:comment>Wäscht super schnell Teller.</rdfs:comment>

</rdf:Description>

</foaf:interest>

</foaf:Person>

Page 84: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

1. Übung

OpenOffice XML

Dokumente mit Endung .odt sind jar-ähnliche zip-

Formate (in .zip umbenennen und entpacken),

welche diverse XML-Dateien enthalten

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

87

12.11.2008

Page 85: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

1. Übung

OpenOffice XML

Dokumente mit Endung .odt sind jar-ähnliche zip-

Formate (in .zip umbenennen und entpacken),

welche diverse XML-Dateien enthalten

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

88

12.11.2008

<text:h text:style-name="Heading_20_1" text:outline-level="1" text:is-list-

header="true">Aufgabenzuordnung </text:h>

<text:h text:style-name="Heading_20_2" text:outline-level="2">Betreffende

Person</text:h>

<text:p text:style-name="Text_20_body">

<text:span text:style-name="T3">Name: </text:span>

<text:span text:style-name="T4">Herr Heinz </text:span>

<text:span text:style-name="Emphasis">

<text:span text:style-name="T6">Müller</text:span>

</text:span>

</text:p>

Page 86: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

1. Übung - Aufgabenstellung

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

89

12.11.2008

Page 87: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

1. Übung - Aufgabenstellung

Einlesen und Erzeugen von XML-Dokumenten mit einer der vorgestellten Bibliotheken (JDOM, XOM, AXIOM, …)

Gegeben:

FOAF-Datei (FOAF.xml) als RDF/XML-Dokument mit Informationen über Personen und deren Fähigkeiten (foaf:interest)

XML-Dokument mit Aufgabenstellungen und benötigten Fähigkeiten (AufgabenFaehigkeitenZuordnung.xml)

Schemabeschreibung für XML-Dokumente von OpenOffice Writer und Microsoft Word 2007 (Hilfe + Webseiten)

Schablonen für XML-Zieldokumente von OpenOffice Writer und Microsoft Word 2007

Beispielausgabe als pdf

Aufgabe: Quellen einlesen und XML-Dokumente mit Aufgabenzuweisungen im OpenOffice (3.0) Writer oder Word 2007 Format ausgeben

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

90

12.11.2008

Page 88: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Literaturangaben

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-infoset-20011024-de.html

http://www.w3.org/XML/Schema#dev

http://www.w3.org/TR/xmlschema-0/

http://www.edition-w3c.de/TR/2001/REC-xmlschema-0-20010502/

http://www.w3.org/DOM/

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

91

12.11.2008

Page 89: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Literaturangaben

Tak Cheung Lam, Jianxun Jason Ding, Jyb-Charn Liu: XML Document Parsing: Operational and Performance Characteristics; Computer - Innovative Technology forComputer Professionals; IEEE, September 2008

http://www.xom.nu/whatswrong/img6.html http://xom.nu/samples.xhtml 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/overvie

w/3_apis.html http://www.oracle.com/technology/oramag/oracle/02-

sep/o52jdom.html http://www.torsten-horn.de/techdocs/java-xml.htm

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

92

12.11.2008

Page 90: PRAKTIKUM ZUR VL - dbis. · PDF fileAPIs & Bibliotheken ... Praktikum 1 - Modelle und ... Modul eines XML-Prozessors zum Einlesen

Literaturangaben

http://www.foaf-project.org/

http://xmlns.com/foaf/spec/

http://www.w3.org/RDF/Validator/

http://ortw.in/2008/01/08/alles-ueber-foaf/

http://was-ist-foaf.de/

http://www.ibm.com/developerworks/xml/library/x-foaf.html

http://www.ibm.com/developerworks/xml/library/x-think4/index.html

http://www.ldodds.com/foaf/foaf-a-matic.de.html

Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML

93

12.11.2008