Laden Sie sich die Java Programmvorlage 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 Programms zu erklären und anhand eines einfachen XML-Fragments den Programmablauf zu beschreiben.
Verwenden Sie keine absoluten Pfade in Ihrem Programm um die Lauffähigkeit auf dem Server zu gewährleisten!
Um eine Fehlerbehandlung brauchen Sie sich in dieser Übung nicht zu kümmern.
Zum Testen können Sie folgende XML-Dateien verwenden:
Beachten Sie, dass der Inhalt der XML-Dateien im Browser eventuell anders dargestellt wird, als er wirklich ist. Z.B. werden Namespace-Deklarationen entfernt, etc. Benutzen Sie daher einen einfachen Texteditor, um die Dateien anzusehen.
Die folgenden drei Beispiele können sowohl mit als auch ohne Berücksichtigung von Namespaces gelöst und abgegeben werden, die maximale Punkteanzahl können Sie jedoch nur mit der Berücksichtigung von Namespaces erreichen. Ohne Namespace-Behandlung wird ihnen pro Beispiel jeweils ein Punkt abgezogen.
Beispiel3.java
    Vervollständigen Sie die Methode
    dom(String filename) so, dass ein übergebenes 
    XML-Dokument (Dateiname als String) wie folgt verarbeitet wird:
Eventuell zugehörige DTDs oder Schema-Definitionen müssen nicht bearbeitet werden. Dass das Dokument nach der Bearbeitung nicht mehr der Definition entspricht, ist hier nicht relevant.
    Verwenden Sie zur Realisierung des Beispiels einen DOM-Baum. Das resultierende 
    Dokument soll in die Datei beispiel3-dom.xml ausgegeben werden - 
    vergeben Sie einen plausiblen XML-Header.
    Tipp: Sehen Sie sich die Methode
    renameNode der
    Document-Klasse genauer 
    an.
Am Ende der Durchführung soll die Statistik der Elemente/Attribute in der Konsole ausgegeben werden.
Anmerkungen zur Namespace-Variante:
    Der Namespace-Prefix soll nicht verändert werden, achten Sie weiters darauf, 
    dass Namespace-Deklarationen erhalten bleiben sollen. In der Test-Datei darf 
    z.B. xmlns:DBai nicht in xmlns:dbai geändert werden, 
    Sie sollten daher den Prefix xmlns gesondert behandeln. Auch soll
    der Prefix bei Elementnamen erhalten bleiben. Aus soft:elementName
    soll also soft:emaNtnemele werden, und nicht etwa tfos:emaNtnemele
    oder gar emaNtnemele:tfos.
Erwartete Ausgabe:
Die Variante mit Namespace-Behandlung muss mit beiden Testdateien umgehen können, die Variante ohne Namespace-Behandlung lediglich mit der ersten der beiden Testdateien.
    Vervollständigen Sie die Methode
    sax(String filename) so, dass das übergebene 
    XML-Dokument (Dateiname als String) gleich behandelt wird, wie im vorigen 
    Beispiel, mit folgenden Änderungen:
    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.
Erwartete Ausgabe:
    Vervollständigen Sie die Methode
    domsax(String filename) so, dass ein übergebenes 
    XML-Dokument (Dateiname als String) wie folgt verarbeitet wird:
tiefe erhalten, in dem seine
    Tiefe im XML-Dokument festgehalten wird (Die Tiefe der Wurzel ist gleich ihrer Matrikelnummer,
    die des ersten Unterelements gleich ihrer Matrikelnummer + 1 etc.).beispiel3-domsax.xml 
    ausgegeben werden (vergeben Sie einen plausiblen XML-Header).Kümmern Sie sich in diesem Beispiel nur um Elemente, Attribute, Processing-Instructions und Text. Alle anderen Knotentypen und Events müssen nicht beachtet werden.
Erwartete Ausgabe:
Generelle Tipps (DOM/SAX):
Wenn Sie weitere Klassen benötigen, so können Sie Inner-Classes (Klassendefinition in einer Klasse) verwenden. Dadurch ersparen Sie sich separate Java-Dateien, auf die Sie beim Hochladen achten müssen.
Beachten Sie, dass SAX nicht garantiert, dass der gesamte Text-Inhalt in einem einzigen Event gelesen wird! Treffen Sie entsprechende Vorkehrungen, sollten Sie mit Text arbeiten.
Schreiben Sie für die folgenden Anforderungen eine XPath-Anfrage auf dieses XML-Dokument.
Für das Testen der XPath-Anfragen können Sie das grafische Tool XPathWay (tar.bz2, zip) verwenden. Kontrollieren Sie, ob Ihre Anfragen die richtigen Ergebnisse liefern.
xpath.txt