Übungen „Web-basierte Anwendungsintegration“ SS 06

Werbung
Stefan Pottinger
Institut für Architektur von Anwendungssystemen
Universität Stuttgart
Übungen
„Web-basierte Anwendungsintegration“
SS 06
Übungsblatt Nr. 2
Datum der Übung: 14.06.06
Aufgabe 2.1 – XPath-Ausdrücke (als Vorbereitung auf Aufgabe 2.3):
Gegeben ist die XML-Datei, die unter zu finden ist. Auf dieses Dokument sollen
verschiedene XPath-Ausdrücke angewendet werden. Entwerfen Sie für die
folgenden Fragestellungen XPath-Ausdrücke.
Es sollen alle Elemente ausgewählt werden,
• die sich zwei Ebenen unter dem Wurzelelement befinden,
• die irgendein Attribut besitzen,
• deren erster Buchstabe ein „n“ ist,
• die ein „r“ und ein „t“ enthalten,
• die die letzte Position in ihrem Kontext einnehmen,
• die an einer „geraden“ (0,2,4…) Position innerhalb ihres Kontexts
vorkommen,
• die vom Typ „termin“ sind und die an dem 15. eines Monats stattfinden,
• die vom Typ „termin“ sind und die zwischen 10:00 und 20:00 beginnen;
außerdem sollen diese Termine an einem Ort stattfinden, der das Wort
„Uni“ beinhaltet.
• Schließlich soll die Summe aller Jahreszahlen ausgegeben werden.
Aufgabe 2.2 - DOM- und SAX-Parser:
Um XML-Dokumente in einem Programm verarbeiten zu können, sind Parser
notwendig. Typischerweise können Sie sich – unabhängig von der konkreten
Programmiersprache - bei der Verwendung von Parsern zwischen DOM-Parsern
und SAX-Parsern entscheiden. Wo liegen die wesentlichen Unterschiede dieser
beiden Parser-Arten? In welchen Szenarien würden Sie die Parser jeweils
einsetzen? (Interessant sind vor allem die Kriterien Bedienungsfreundlichkeit,
Speicherbedarf und Komplexität der Berechnungen auf den XML-Dokumenten.)
Aufgabe 2.3 – Einsatz eines DOM-Parsers in Java:
Sie sollen in Java einen DOM-Parser zum Einlesen eines XML-Dokumentes
verwenden und den resultierenden DOM-Tree mit Hilfe verschiedener
Operationen und XPath-Ausdrücken auswerten.
http://www.iaas.uniLesen
Sie
die
XML-Datei,
die
unter
stuttgart.de/lehre/vorlesung/2006_ss/vorlesungen/wbai/uebungen/resou
rces/exc2/paper_xsd.xml zu finden ist, mit einem DOM-Parser ein. Entwerfen
Sie ein passendes Schema oder eine DTD zu dem XML-Dokument, so dass der
Parser ihr XML-Dokument gegen die entsprechende Definition validieren kann.
Nach dem Einlesen sollen zunächst alle Kapitelüberschriften mit den zugehörigen
Seitenzahlen des Kapitels ausgegeben werden. Danach soll die Summe der
Seitenzahlen aller Kapitel ermittelt werden. Verwenden Sie dazu sowohl die
Document-API des DOM-Trees, als auch XPath-Ausdrücke.
Versuchen Sie, Ihr XML-Dokument durch eine Vielzahl von Kapiteln stark in der
Größe anwachsen zu lassen. Welche Auswirkungen stellen Sie fest?1 Versuchen
die den Memory-Footprint und die Zeit zu messen, die ein sehr großes Dokument
beim Parsen verursacht.
Aufgabe 2.4 – Einsatz eines SAX-Parsers in Java:
Nun soll ein SAX-Parser verwendet werden, um das in Aufgabe 2.3 verwendete
XML-Dokument einzulesen. Ebenso wie in Aufgabe 2.3 soll dabei die Anzahl der
Seitenzahlen summiert werden. Machen Sie sich dazu mit den Event-Handlern
des SAX-Parsers vertraut und entscheiden Sie, welche benötigt werden. Wo liegt
der Unterschied zur Vorgehensweise bei der Lösung dieser Aufgabe im Vergleich
zur Verwendung des DOM-Parsers? Messen Sie erneut Zeit und MemoryFootprint und vergleichen Sie die Ergebnisse mit Aufgabe 2.3.
Aufgabe 2.5 – XSLT-Transformationen in Java:
Gegeben
ist
die
XML-Datei,
die
unter
http://www.iaas.unistuttgart.de/lehre/vorlesung/2006_ss/vorlesungen/wbai/uebungen/resou
rces/exc2/termine.xml zu finden ist.
Transformieren Sie dieses Dokument in eine übersichtliche HTML-Datei. Bringen
Sie dabei alle Daten aus der XML-Datei in der HTML-Datei unter Verwendung
einer geeigneten physischen Formatierung innerhalb der HTML-Datei unter. Wie
ist der Ablauf im Java-Programm, welchen Aufbau hat Ihr Stylesheet?
Aufgabe 2.6 – „Advanced“ XSLT-Transformationen ☺ :
Gegeben ist die XML-Datei „logging1.xml“ (unter http://www.iaas.unistuttgart.de/lehre/vorlesung/2006_ss/vorlesungen/wbai/uebungen/resou
rces/exc2/logging_aufgabe/ sind alle Dateien dieser Aufgabe zu finden). Sie
spiegelt ein Log-File wider und enthält für unterschiedliche Ereignisse
(„LoggingEvent_XY“) jeweils die Dauer, die diese Ereignisse benötigt haben. Ihre
Aufgabe besteht darin, durch eine XSLT-Transformation aus der gegebenen XMLDatei eine neue XML-Datei zu erstellen, wobei
• für jedes in der XML-Datei vorhandene LoggingEvent die Summe der
Dauer aller LoggingEvents dieser Art ein einziges Mal ausgegeben werden
soll.
o Dabei ist Ihnen die Anzahl der verfügbaren LoggingEvents, also die
konkreten Endungen nach dem Muster „LoggingEvent_XY“, nicht
bekannt.
o Ebenso wenig ist Ihnen bekannt, wie oft die einzelnen
LoggingEvents in dem Log-File vorkommen.
• Neben der beschriebenen Summe soll auch die Anzahl der jeweiligen
LoggingEvents in dem Log-File sowie ihre durchschnittliche Dauer
ausgegeben werden.
Die von Ihnen erstellte XML-Datei sollte ausgehend von der Datei „logging1.xml“
demnach mindestens die gleichen Informationen enthalten wie die Datei
„logging1_resultDemo.xml“. Um die Korrektheit Ihrer Transformation zu
1
Es bietet sich an, den Verbrauch des Speicherplatzes während des Parsens zu beobachten. Zu diesem Zweck
können Sie den MemoryMonitor von Sun verwenden, der unter http://www.iaas.unistuttgart.de/lehre/vorlesung/2006_ss/vorlesungen/wbai/uebungen/resources/ex
c2/java2d/ zu finden ist.
überprüfen, können Sie schließlich Ihre Ergebnisse der Transformation der Datei
„logging2.xml“ mit der Datei „logging2_resultDemo.xml“ vergleichen.
Zusatzaufgaben:
Entwerfen Sie zu dem Dokument aus Aufgabe 2.5 eine passende DTD und ein
XSD-Schema.
Welche Bedeutung nehmen Infosets vor allem in Bezug auf große XMLDokumente ein, auch in Bezug auf Aufgabe 2.3?
Anmerkung:
Zur Lösung der Aufgaben benötigen Sie einen DOM-Parser, einen SAX-Parser und
einen Stylesheet Prozessor. Sie finden alle notwendigen Bestandteile
beispielsweise im J2SE 1.4.2 SDK bzw. J2SE 5.0 SDK auf http://java.sun.com/. Sie
können natürlich gerne andere Software verwenden – Hauptsache Ihre Lösungen
funktionieren ☺
Zum Ausprobieren der XPath-Ausdrücke gibt es ebenfalls zahlreiche frei
verfügbare Werkzeuge.
Herunterladen