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