Praktikum-Foliensatz-01 - DBIS - Humboldt

Werbung
PRAKTIKUM ZUR VL
NEUE KONZEPTE UND
TECHNIKEN FÜR
DATENBANKSYSTEME
Humboldt-Universität zu Berlin
Martin Kost
Agenda
2

Verarbeitung von XML
 Beispiel
Aufgabenverteilung
 Prozessieren von XML
 Darstellungsformen/Modelle zur Verarbeitung von XML
 APIs & Bibliotheken

Aufgabe 1
 FOAF
 Office
XML
 Aufgabenstellung
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Beispiel Aufgabenverteilung
3
Personen mit Fähigkeiten
XML-Quelldokument
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Beispiel Aufgabenverteilung
<Personal>
4
<pers:Angestellte>
<pers:Angestellter Schlüssel="Angest-123">
Personen mit Fähigkeiten
<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>
XML-Quelldokument
</pers:Angestellte>
</Personal>
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Beispiel Aufgabenverteilung
5
Personen mit Fähigkeiten
Aufgaben mit benötigten Fähigkeiten
XML-Quelldokument
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Beispiel Aufgabenverteilung
6
Personen mit Fähigkeiten
Aufgaben mit benötigten Fähigkeiten
<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>
XML-Quelldokument
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Beispiel Aufgabenverteilung
7
Personen mit Fähigkeiten
Aufgaben mit benötigten Fähigkeiten
Beschreibung von Fähigkeiten
XML-Quelldokument
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Beispiel Aufgabenverteilung
8
Personen
mit Fähigkeiten
<Fähigkeiten>
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
Aufgaben mit benötigten Fähigkeiten
<faeh:Beschreibung>Wäscht super schnell Teller.</faeh:Beschreibung>
</faeh:Fähigkeit>
Beschreibung
von Fähigkeiten
<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>
XML-Quelldokument
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Beispiel Aufgabenverteilung
9
Personen mit Fähigkeiten
Aufgaben mit benötigten Fähigkeiten
Beschreibung von Fähigkeiten
Zuordnungen von Personen zu Aufgaben
XML-Quelldokument
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Beispiel Aufgabenverteilung
10
Personen mit Fähigkeiten
Aufgaben mit benötigten Fähigkeiten
Beschreibung von Fähigkeiten
Zuordnungen von Personen zu Aufgaben
<Zuordnungen>
<Zuordnung Angestellter="Angest-123" Aufgabe="Aufg-234"/>
<Zuordnung Angestellter="Angest-007" Aufgabe="Aufg-2345"/>
</Zuordnungen>
XML-Quelldokument
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Beispiel Aufgabenverteilung
11
Personen mit Fähigkeiten
Aufgaben mit benötigten Fähigkeiten
Beschreibung von Fähigkeiten
Aufgabenzuweisung für
Angestellte
Zuordnungen von Personen zu Aufgaben
Verarbeitungsprozess
XML-Quelldokument
XML-Zieldokument
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Beispiel Aufgabenverteilung
12
Personen mit Fähigkeiten
<Angestellte>mit benötigten Fähigkeiten
Aufgaben
<pers:Angestellter xmlns:pers="http://www.example.com/Personal"
Schlüssel="Angest-123">
Aufgabenzuweisung
für
Beschreibung
von
Fähigkeiten
<pers:Name>
Angestellte
<pers:Vorname>Heinz</pers:Vorname>
Zuordnungen
von Personen zu Aufgaben
<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">
Verarbeitungsprozess
<aufg:Bezeichnung>Tellerputzer in der Kantine</aufg:Bezeichnung>
</aufg:Aufgabe>
</pers:Angestellter>
…
XML-Quelldokument
XML-Zieldokument
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Beispiel Aufgabenverteilung
13
…
Personen mitxmlns:pers="http://www.example.com/Personal"
Fähigkeiten
<pers:Angestellter
Schlüssel="Angest-009">
<pers:Name>
Aufgaben
mit benötigten Fähigkeiten
<pers:Vorname>James</pers:Vorname>
Aufgabenzuweisung für
<pers:Nachname>Mystery</pers:Nachname>
Beschreibung
von Fähigkeiten
Angestellte
</pers:Name>
Zuordnungen
Personen zu Aufgaben
<faeh:Fähigkeitvon
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>
Verarbeitungsprozess
<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>
XML-Quelldokument
XML-Zieldokument
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Beispiel Aufgabenverteilung
15

Quelle: Dokument (AufgabenPersonenZuordnung.xml) mit





Gewünschtes Ergebnis ist ein Dokument (Aufgabenverteilung.xml), welches alle
Angestellten und mit deren zugeordneten Aufgaben auflistet:







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
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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
per Quellcode
16
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;
…
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
per Quellcode
17
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;
…
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Einsatz von Parsern und Bibliotheken
18
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Motivation für APIs, Parser & Bibliotheken
19

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
12.11.2008
Verarbeitung von XML
Möglichkeiten der Verarbeitung
20


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
12.11.2008
Verarbeitung von XML
Möglichkeiten der Verarbeitung
21




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
12.11.2008
Verarbeitung von XML
XML-Parser
22

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, …
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Prozessieren von XML in vier Stufen
23
XML-Eingabedokument
Parsen
XML-Ausgabedokument
Zugriff
unabhängig von den
verschiedenen Parse-Modellen
Zeichenkonvertierung
Lexikalische
Analyse (FSM)
Modifikation
variiert zwischen
Parse-Modellen
Syntaktische
Analyse (PDA)
Serialisierung
A
P
I
Umsetzung durch die
Anwendung
Semantische
Analyse
Bit-Strom
Zeichen-Strom
Token-Strom
Datenstruktur (Parse-Modell- abhängig)
(UTF-8/16, LE/BE, (z.B. 003C 0063 003E = (z.B. ′<c>′ ′Hallo′ (z.B. Bäume, Ereignisse, integer arrays)
z.B. 3C 63 3E)
′<′ ′c′ ′>′)
′</c>′)
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Prozessieren von XML in vier Stufen
24
XML-Eingabedokument
Parsen
XML-Ausgabedokument
Zugriff
unabhängig von den
verschiedenen Parse-Modellen
Zeichenkonvertierung
Modifikation
Serialisierung
variiert zwischen
Syntaktische
Analyse (PDA):
Parse-Modellen
A
• Überprüfung des
Lexikalische
Syntaktische auf P
Eingabedokuments
I
Analyse (FSM)
Analyse (PDA)
Wohlgeformtheit
und
• Validierung gegen ein
Schema
Umsetzung durch die
Anwendung
Semantische
Analyse
Bit-Strom
Zeichen-Strom
Token-Strom
Datenstruktur (Parse-Modell- abhängig)
(UTF-8/16, LE/BE, (z.B. 003C 0063 003E = (z.B. ′<c>′ ′Hallo′ (z.B. Bäume, Ereignisse, integer arrays)
z.B. 3C 63 3E)
′<′ ′c′ ′>′)
′</c>′)
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset
25



Ereignisbasiert
Baumbasiert
Daten-/Objektorientiert
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset
26

Vier Arten/Methoden der Verarbeitung
 Ereignisbasiertes
 SAX,
Push
XNI
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
27
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
28
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
<faeh:Beschreibung>Wäscht super schnell Teller.
</faeh:Beschreibung> …
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
29
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
<faeh:Beschreibung>Wäscht super schnell Teller.
</faeh:Beschreibung> …
Start Element: <Fähigkeit>
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
30
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
<faeh:Beschreibung>Wäscht super schnell Teller.
</faeh:Beschreibung> …
Start Elementname: Fähigkeit
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
31
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
<faeh:Beschreibung>Wäscht super schnell Teller.
</faeh:Beschreibung> …
Start Elementname: Fähigkeit
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
32
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
<faeh:Beschreibung>Wäscht super schnell Teller.
</faeh:Beschreibung> …
Attributname: Schlüssel
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
33
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
<faeh:Beschreibung>Wäscht super schnell Teller.
</faeh:Beschreibung> …
Attributname: Schlüssel
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
34
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
<faeh:Beschreibung>Wäscht super schnell Teller.
</faeh:Beschreibung> …
Attributwert: Tellerwaschen
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
35
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
<faeh:Beschreibung>Wäscht super schnell Teller.
</faeh:Beschreibung> …
Attributwert: Tellerwaschen
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
36
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
<faeh:Beschreibung>Wäscht super schnell Teller.
</faeh:Beschreibung> …
Start Element: <Beschreibung>
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
38
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
<faeh:Beschreibung>Wäscht super schnell Teller.
</faeh:Beschreibung> …
Start Element: Beschreibung
attList: null
Start Element: <Beschreibung>
l_name: Beschreibung
NS-url: http://www.example.com/Faehigkeiten
q_name: http://www.example.com/Faehigkeiten:Beschreibung
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
39
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
<faeh:Beschreibung>Wäscht super schnell Teller.
</faeh:Beschreibung> …
Start Element: <Beschreibung>
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
40
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
<faeh:Beschreibung>Wäscht super schnell Teller.
</faeh:Beschreibung> …
Start Elementname: Beschreibung
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
41
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
<faeh:Beschreibung>Wäscht super schnell Teller.
</faeh:Beschreibung> …
Start Elementname: Beschreibung
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
42
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
<faeh:Beschreibung>Wäscht super schnell Teller.
</faeh:Beschreibung> …
Text: Wäscht …
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
43
<faeh:Fähigkeit Schlüssel="Tellerwaschen">
<faeh:Beschreibung>Wäscht super schnell Teller.
</faeh:Beschreibung> …
Text: Wäscht …
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
44

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
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
45

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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset
46

Vier Arten der Verarbeitung
 Ereignisbasiertes
 SAX,
Push
XNI
 Ereignisbasiertes
 XMLPULL,
Pull
CyberNeko, StAX
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
47

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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
48

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)
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Ereignisbasiert
49

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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset
50

Vier Arten der Verarbeitung
 Ereignisbasiertes
 SAX,
Push
XNI
 Ereignisbasiertes
 XMLPULL,
Pull
CyberNeko, StAX
 Baum
 DOM,
JDOM, dom4j, XOM, ElectricXML, etc.
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Baumbasiert
51

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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Baumbasiert
52
Wurzel-Element:
Personal
Element:
Angestellte
Element:
Angestellter
Element:
Name
Attribut:
“Schlüssel“
Element:
Referenz
Element:
Vorname
Element:
Nachname
Text:
Heinz
Text:
Müller
Attribut:
“Fähigkeit“
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Angestellter – Baumbasiert
Modelle
Node objectfür das XML-Infoset
53
Wurzel-Element:
Element name: Name
Personal
attributeList: null
null
namespace: http://www.example.com/Personal
Vorname
Referenz
Element:
Angestellte
Nachname
Element:
Angestellter
Element:
Name
Attribut:
“Schlüssel“
Element:
Referenz
Element:
Vorname
Element:
Nachname
Text:
Heinz
Text:
Müller
Attribut:
“Fähigkeit“
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Baumbasiert
55

Document Object Model (DOM)


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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Baumbasiert
56

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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Baumbasiert
57

Document Object Model (DOM)
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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Baumbasiert
58

Document Object Model (DOM)
zum Einsatz auf vielen verschiedenen Plattformen Spezifikation in der plattformunabhängigen Sparche
GenauIDL
hier
auchManagement
das Problem!
derliegt
Object
Groupe (OMG) verfasst
•Zuviele
berücksichtigen
IDL: Details
InteracezuDefinition
Language
•Dadurch
zu komplex
 wird in der CORBA Spezifikation beschrieben
•Zu unkonkret
 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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Baumbasiert
59



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 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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Baumbasiert
60

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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Baumbasiert
61





JDOM-Bibliothek: 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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Baumbasiert
62
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( new
ElementFilter("Referenz") );
for (; iRefrenzenOriginal.hasNext(); )
{
…
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Baumbasiert
63

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/javaxml.htm#Programmierbeispiele-JDOM
Model

http://www.cafeconleche.org/books/xmljava/chapters/ch15.htm
l
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Baumbasiert
64

JDOM-Paket downloaden
 http://www.jdom.org/dist/binary

Entpacken & Pfad-Variablen setzen (Pfad-zumJDOM-Verzeichnis = PzJV):


set Classpath= PzJV\jdom.jar;%CLASSPATH%
export …
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Baumbasiert
65

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.
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Baumbasiert
66

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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Baumbasiert
67


XOM 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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
XOM – Unterschiede zu JDOM
68








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, …
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – XOM Beispiel (1)
69
<?xml version="1.0" encoding="iso-8859-1"?>
public static void main(String[] args) {
<rss version="0.91">
String url = "http://www.spiegel.de/schlagzeilen
<channel>
/rss/0,5291,273,00.xml";
<title>SPIEGEL ONLINE - UniSPIEGEL</title>
Builder parser = new Builder();
<link>http://www.spiegel.de/unispiegel/0,1
// Parsen des Dokuments
518,,00.html</link>
Document document = parser.build(url);
<description>Schneller wissen, was wichtig
Element oldRoot = document.getRootElement();
ist</description>
Element newRoot = new Element("linkset");
<language>de</language>
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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – XOM Beispiel (2)
70
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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset
71

Vier Arten der Verarbeitung
 Ereignisbasiertes
 SAX,
Push
XNI
 Ereignisbasiertes
 XMLPULL,
Pull
CyberNeko, StAX
 Baum
 DOM,
JDOM, dom4j, XOM, ElectricXML, etc.
 Datenbindung
 Castor,
(Marshalling)
Zeus, JAXB, JaxMe, etc.
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Datenorientiert
72
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Datenorientiert
73
Class Vorname
{
string Text;
};
Class Name
{
Vorname vorname_1;
Name name_1;
};
Class Angestellter
{
string Schlüssel;
Name name_1;
Referenz referenz_1
};
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Datenorientiert
74

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
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Datenorientiert
75

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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Tokenindexierung
76

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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Modelle für das XML-Infoset – Vergleich
77
DOM: Baumobjekt
Lebenszeit: Lang Objekt: Ja
Personal
Angestellte
“Schlüssel“
Angestellter
Name
Referenz
Vorname
Nachname
Heinz
Müller
SAX/StAX: Ereignisse
Lebenszeit: Kurz Objekt: Nein
start document
…
start element: Fähigkeit
attribute: Schlüssel
start element: Beschreibung
character: Wäscht …
end element: Beschreibung
…
end document
Data Streaming: Klassen
Lebenszeit: Lang Objekt: Ja
Class Vorname
{
string Text;
};
Class Name
{
Vorname vorname_1;
Name name_1;
};
Class Angestellter
{
…
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Parser-Anwendungs-Interaktion
78
Parser
Push Parser
Loop
Loop
// Kommuniziert mit Tokenizer
// Erzeugt die Datenstrukturen
// Datenstrukturen vollständig
erzeugt
// Bereit für den Zugriff durch
die Anwendung
Zugriff ermöglicht
// Navigieren über die
Datenstrukturen
Anwendung (Zugriff)
Pull Parser
// 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
}
Aufruf entspr. “callback” Funkt.
”Callback” Funktionen
startELement(…) {
// Verarbeite das Ereignis
return;
}
…
Event nextEvent() {
// Kommuniziert mit Tokenizer
// Erzeugt Ereignis durch
Klassifizierung
// Erzeugt Objekte für Token
// Rückgabe des Ereignisses
}
Rückgabe des
Ereignisses
Aufruf von
nextEvent()
Antwort
Loop
// Aufruf von nextEvent()
// Überprüfen des Ereignistyps
// Verarbeite das Ereignis
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Weitere APIs & Bibliotheken
79

JAXB: Java Architecture for XML Binding

definiert Mechanismus



JAX-RPC: Java API for XML-based Remote Process
Communications/Call

definiert Mechanismus


zum Schreiben von Java-Objekten als XML-Dokument (Marshalling)
zum Erzeugen von Java-Objekten aus XML-Dokumenten
(Unmarshalling)
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)
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Weitere APIs & Bibliotheken
80

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).
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Weitere APIs & Bibliotheken
81

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 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
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Verarbeitung von XML
Weitere APIs & Bibliotheken
82


libxml (2), xmlwrapp für C++
Visual Studio Bibliotheken (.Net)
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Übungen
83
~fünf
XML-Parsing
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
1. Übung
84

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
12.11.2008
1. Übung
85

Friend Of A Friend (FOAF)
 Menschen
und ihre Beziehungen untereinander maschinen-verständlich (≠
<foaf:Person
rdf:about="http://www.example.org/~heinzi/">
maschinen-lesbar)
machen.
<foaf:name>Heinz
Müller</foaf:name>
 Eigene Stammdaten erfassen
<foaf:title>Herr</foaf:title>
<foaf:givenname>Heinz</foaf:givenname>
 Liste mit Verwandten, Freunden, Kollegen und Kontakten erstellen
<foaf:family_name>Müller</foaf:family_name>
 Im Internet veröffentlichen  Ich und meine Beziehungen werden durchsuchbar
<foaf:gender>male</foaf:gender>
 Basiert auf RDF/XML mit speziellem Vokabular (wie z.B. RSS 2.0)
<foaf:nick>Heinzi</foaf:nick>
 Automatische Verarbeitung der Inhalte; z.B. Adresse  Verknüpfung mit
<!--<foaf:mbox
rdf:resource="mailto:[email protected]"/>-->
Karte/Navigation
<foaf:mbox_sha1sum>
 Diverse Werkzeuge bereits vorhanden
b62f43717e01cb0dba02e2485f15228ee08fc0fc</foaf:mbox_sha1sum>
 Verwendungrdf:resource="http://www.example.org/~heinzi/"/>
in sozialen Netzwerken
<foaf:homepage
<foaf:phone rdf:resource="tel:0123456789"/>
 http://www.w3.org/RDF/Validator/
<foaf:workplaceHomepage rdf:resource="http://www.mensageschirr.example.com"/>
 http://www.foaf-project.org/
<foaf:schoolHomepage
rdf:resource="http://www.example.com/schulen/gesamtschuleXY/"/>
http://xmlns.com/foaf/spec/
…
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
1. Übung
86

Friend Of A Friend (FOAF)
…  Menschen und ihre Beziehungen untereinander maschinen-verständlich (≠
maschinen-lesbar) machen.
<foaf:knows>
 <foaf:Person>
Eigene Stammdaten erfassen
<foaf:name>James
Mystery</foaf:name>
 Liste
mit Verwandten,
Freunden, Kollegen und Kontakten erstellen
<foaf:mbox_sha1sum>
 Im Internet veröffentlichen  Ich und meine Beziehungen werden durchsuchbar
91b9e2e77fe5a8e72fea1f647352cc44d6cbd4ee</foaf:mbox_sha1sum>
auf RDF/XML
mit speziellem Vokabular (wie z.B. RSS 2.0)
<!-- Basiert
<foaf:mbox
rdf:resource="mailto:[email protected]"/>-->
 </foaf:Person>
Automatische Verarbeitung der Inhalte; z.B. Adresse  Verknüpfung mit
Karte/Navigation
</foaf:knows>
 Diverse Werkzeuge bereits vorhanden
<foaf:interest>
 <rdf:Description
Verwendung inrdf:about="http://www.example.org/qualification/TellerWaschen">
sozialen Netzwerken
<dc:title>Ausbildung im Teller waschen</dc:title>
 http://www.w3.org/RDF/Validator/
<rdfs:comment>Wäscht super schnell Teller.</rdfs:comment>
 http://www.foaf-project.org/
</rdf:Description>
 http://xmlns.com/foaf/spec/
</foaf:interest>
</foaf:Person>
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
1. Übung
87


OpenOffice XML
Dokumente mit Endung .odt sind jar-ähnliche zipFormate (in .zip umbenennen und entpacken),
welche diverse XML-Dateien enthalten
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
1. Übung
88
OpenOffice XML
… Dokumente mit Endung .odt sind jar-ähnliche zip<text:h text:style-name="Heading_20_1" text:outline-level="1" text:is-listheader="true">Aufgabenzuordnung
</text:h>
Formate (in .zip umbenennen
und entpacken),
<text:h text:style-name="Heading_20_2" text:outline-level="2">Betreffende
welche diverse XML-Dateien enthalten
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>
…
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
1. Übung - Aufgabenstellung
89
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
1. Übung - Aufgabenstellung
90


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
12.11.2008
Literaturangaben
91








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-xmlinfoset-20011024-de.html
http://www.w3.org/XML/Schema#dev
http://www.w3.org/TR/xmlschema-0/
http://www.edition-w3c.de/TR/2001/RECxmlschema-0-20010502/
http://www.w3.org/DOM/
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Literaturangaben
92










Tak Cheung Lam, Jianxun Jason Ding, Jyb-Charn Liu: XML
Document Parsing: Operational and Performance
Characteristics; Computer - Innovative Technology for
Computer 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/02sep/o52jdom.html
http://www.torsten-horn.de/techdocs/java-xml.htm
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Literaturangaben
93








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/xfoaf.html
http://www.ibm.com/developerworks/xml/library/xthink4/index.html
http://www.ldodds.com/foaf/foaf-a-matic.de.html
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
12.11.2008
Herunterladen