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
•Zuviele
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