Upload
truongdien
View
219
Download
3
Embed Size (px)
Citation preview
PRAKTIKUM ZUR VL
NEUE KONZEPTE UND
TECHNIKEN FÜR
DATENBANKSYSTEME
Humboldt-Universität zu Berlin
Martin Kost
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
Verarbeitung von XMLBeispiel Aufgabenverteilung
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
3
12.11.2008
Personen mit Fähigkeiten
XML-Quelldokument
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>
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
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>
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
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>
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
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>
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
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>
…
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>
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
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;
…
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;
…
Verarbeitung von XMLEinsatz von Parsern und Bibliotheken
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
18
12.11.2008
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
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
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
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
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
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
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
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
Verarbeitung von XML Modelle für das XML-Infoset – Ereignisbasiert
12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
27
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> …
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>
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
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
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
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
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
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
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>
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
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>
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
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
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 …
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 …
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
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
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
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
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
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
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
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
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“
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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>
…
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
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
Verarbeitung von XML Modelle für das XML-Infoset – Datenorientiert
12.11.2008Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
72
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
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
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
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
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
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
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
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
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
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
Übungen
~fünf
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
83
XML-Parsing
12.11.2008
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
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/"/>
…
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>
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
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>
…
1. Übung - Aufgabenstellung
Praktikum 1 - Modelle und Bibliotheken zum Parsen von XML
89
12.11.2008
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
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
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
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