Laden Sie sich die Java Programm-Vorlage herunter und vervollständigen Sie die Methoden nach den entsprechenden Vorgaben.
Kommentieren Sie Ihren Source-Code! Beim Kontrollgespräch müssen Sie in der Lage sein die Funktionsweise des Programmes zu erklären und per Hand den Programmablauf anhand eines einfachen XML Fragmentes zu beschreiben.
Wenn Sie weitere Klassen benötigen, verwenden Sie Inner-Classes (Klassendefinition in einer Klasse), es soll nur eine Java Datei abgegeben werden.
Beachten Sie, dass SAX nicht garantiert, dass der gesamte Text-Inhalt mit einem einzigen Event gelesen wird! Treffen Sie entsprechende Vorkehrungen sollten Sie mit Text arbeiten.
Verwenden Sie keine absoluten Pfade in Ihrem Programm um die Lauffähigkeit auf dem Server zu gewährleisten!
Um eine Fehlerbehandlung brauchen Sie sich hierbei nicht zu kümmern.
Bsp3.java
Zum Testen können Sie folgende XML Dateien verwenden (die erwartete Ausgabe ist bei den Beispielen zu finden):
Beachten Sie, dass die XML Dateien im Browser eventuell anders dargestellt werden als sie wirklich sind. ZB werden Namespace Deklarationen entfernt… . Laden Sie die Dateien also auf Ihren Rechner und benutzen Sie einen einfachen Texteditor um die Dateien anzusehen.
Die Beispiele können entweder mit oder ohne Berücksichtigung von Namespaces gelöst werden, ohne Namespaces bekommen Sie jedoch nicht alle möglichen Punkte. Wenn Sie ein Beispiel ohne Berücksichtigung von Namespaces lösen, bekommen Sie pro Beispiel einen Punkt abgezogen.
Vervollständigen Sie die Methoden bsp3DOM1
und bsp3SAX1
so, dass ein
übergebenes XML Dokument (Dateiname als String) wie folgt verarbeitet wird:
Eine eventuell zugehörige DTD oder Schema Definition muss nicht bearbeitet werden. Dass das Dokument nach der Bearbeitung nicht mehr zur DTD/Schema Definition passt, ist nicht relevant.
Verwenden Sie einmal einen DOM Baum (bsp3DOM1
) und einmal einen SAX Prozessor
(bsp3SAX1
).
Die DOM-Variante soll das resultierende XML Dokument in die Datei
bsp3_dom1_output.xml
ausgeben. Die SAX-Variante soll das XML Dokument
einfach auf die Konsole ausgeben (vergeben Sie einen plausiblen XML Header).
Für die DOM Variante ist die Methode renameNode
von Document
hilfreich.
Die Statistik wie viele Elemente/Attribute vorhanden sind soll bei beiden Teilaufgaben auf die Konsole ausgegeben werden.
Für die Abgabe: Überlegen Sie sich weiters welche Variante (DOM oder SAX) sich für welche Anforderungen besser geeignet hat. Überlegen Sie weiters welche Variante in welchen Fällen speicherintensiver ist.
Der Namespace Prefix soll nicht verändert werden, achten Sie weiters darauf,
dass Namespace-Dekalarationen nicht verändert werden dürfen. Im Test-File darf
zB xmlns:Foaf
nicht auf xmlns:foaf
oder gar auf XMLNS:FOAF
geändert
werden, Sie sollten daher den Prefix xmlns
gesondert behandeln.
Bei SAX-Parsern kann es hilfreich sein, wenn Sie bei Ihrem XMLReader
das Feature
http://xml.org/sax/features/namespace-prefixes
verwenden. Dadurch werden
unter anderem die Namespace-Deklarationsattribute xmlns
und xmlns:prefix
in
das Attributobjekt bei startElement()
inkludiert.
Die Variante mit der Namespacebehandlung muss mit beiden Testdateien umgehen können, die Variante ohne Namespacebehandlung lediglich mit der ersten Testdatei.
Bei diesem Beispiel können Sie davon ausgehen, dass es keine Dokumente mit Namespaces als Eingabe bekommt. Es gibt hier auch keinen Zusatzpunkt für Lösungen mit Namespaces!
Vervollständigen Sie die Methoden bsp3DOM_SAX
so, dass ein übergebenes XML
Dokument (Dateiname als String) wie folgt verarbeitet wird:
position
erhalten
in dem die Position in Document-Order festgehalten wird.bsp3_dom2_output.xml
ausgeben werden.Kümmern Sie sich in diesem Beispiel nur um Elemente, Attribute, Processing Instructions und Text. Alle anderen Knotentypen und Events brauchen Sie nicht zu beachten.
Beachten Sie, dass Character-Events in SAX mehrfach auftreten können, und nicht den gesamten Text-Inhalt auf einmal beinhalten. Treffen Sie entsprechende Maßnahmen, dass kein Text verloren geht.
Schreiben Sie für die folgenden Anforderungen jeweils eine XPath Anfrage auf dieses XML Dokument.
Schreiben Sie die Anfragen in die Text-Datei xpath.txt
. Sie können die
Anfragen gerne kommentieren um beim Kontrollgespräch die Grundidee parat zu
haben.
Die XPath Beispiele müssen jedenfalls unter der Berücksichtigung von Namespaces gelöst werden!
xpath.txt
Für das Testen der XPath Anfragen können Sie das grafische Tool XPathTester 1.3 verwenden. Achtung, der XPathTester setzt nur XPath 1 um (verwenden Sie nicht die Version 1.4 des Programms – diese hat Probleme mit Namespaces)!
Kontrollieren Sie, ob Ihre Anfragen die richtigen Ergebnisse liefern. Vergessen Sie keinesfalls darauf, zusätzlich das File xpath.txt mit Ihren Lösungen auf dem Server im Unterverzeichnis “beispiel3” bereitzustellen.
Die Beispiele müssen bis zum Abgabetermin auf unserem Server
(minteka.dbai.tuwien.ac.at) im Unterverzeichnis Beispiel3
verfügbar
sein (die Dateien werden automatisch abgesammelt und den Tutoren zur
Verfügung gestellt).
Insgesamt erstellen Sie also 2 Dateien (1 x XPath, 1 x Java).
Überprüfen Sie Ihre Abgabe direkt auf dem Server! Die notwendigen Tools sind installiert, und die Tutoren prüfen Ihre Abgabe ebenfalls direkt am Server. Laden Sie außer den Abgabedateien keine weiteren Dateien auf den Server!
Für das Beispiel 3 werden maximal 15 Punkte vergeben. Im Rahmen des Kontrollgespräches wird nicht nur die Korrektheit, sondern vor allem das Verständnis der Technologien kontrolliert.
Die volle Punktezahl gibt es nur wenn das Beispiel korrekt gelöst ist und die Lösung erklärt werden kann. Nicht selbstständig gelöste Abgaben werden jedenfalls mit 0 Punkten bewertet!