Semistrukturierte Daten (VL 2.0, 181.135)
Laborbungsteil, SS 2007
Beispiel 3
Aufgabenstellung
- Erstellen Sie für das zur Verfügung gestellte XML-Dokument
(universitaet.xml)
eine XML-Schema Datei universitaet.xsd,
und fügen Sie im Instanzdokument universitaet.xml eine Verknüpfung mit dieser Schema-Definition ein.
Bei der Erstellung der Schema-Definition sind folgende Punkte zu beachten:
- Das XML-Dokument enhält 3 Primärschlüssel: matrNr für die student-Elemente, vorlNr für die vorlesung-Elemente und persNr für die professor-Elemente. Modellieren Sie diese Primärschlüssel mit Hilfe von geeigneten key-Elementen in der Schema-Definition.
- Das XML-Dokument enhält 2 Fremdschlüssel: vnr (für die von einer/m Student/in besuchten Vorlesungen) ist
ein Fremdschlüssel auf den Primärschlüssel vorlNr der vorlesung-Elemente; gelesenVon (für die/den Professor/in, die/der eine bestimmte Vorlesung abhält) ist ein Fremdschlüssel auf den Primärschlüssel persNr der professor-Elemente. Modellieren Sie diese Fremdschlüssel mit Hilfe von geeigneten keyref-Elementen in der Schema-Definition.
- Alle key- und keyref-Elemente sollen als Subelemente der Element-Definition des universitaet-Elements definiert werden.
- Beachten Sie bei der Schema-Definition auch, dass die Subelemente eines bestimmten element-Typs nicht immer in der selben Reihenfolge auftreten müssen (z.B.: name als Subelement von student kann vor oder nach matrNr auftreten).
Überprüfen Sie das XML-Dokument
universitaet.xml mit Hilfe des Tools xmlllint auf Wohlgeformtheit und Gültigkeit.
Stellen Sie außerdem auch Varianten test1.xml bis test5.xml der Datei universitaet.xml bereit, die die folgenden negativen Testfälle abdecken: Verletzung von jeweils einer der 3 Primärschlüssel-Bedingungen (test1 - test3):
- test1.xml: matrNr
- test2.xml: vorlNr
- test3.xml: persNr
bzw. Verletzung der referentiellen Integrität bei jeweils einem der 2 Fremdschlüssel (test4 - test5):
- test4.xml: vnr
- test5.xml: gelesenVon
Überprüfen Sie für die negativen Testfälle mittels xmlllint, dass die Dateien test1.xml bis test5.xml zwar wohlgeformt aber nicht gültig sind.
- Erstellen Sie ein Java-Programm Dom.java, welches mittels DOM-Parser folgende Funktionalität erfüllt:
- Erstellen Sie ein Java-Programm Sax.java, welches mittels SAX-Parser die analoge Funktionalität wie das Programm Dom.java bereitstellt, d.h.:
- Einlesen des XML-Dokuments universitaet.xml mittels SAX-Parser und Validierung gegen das von Ihnen erstellte XML-Schema universitaet.xsd
- Ausgabe aller ProfessorInnen plus Matrikelnummer aller StudentInnen, die bei ihm/ihr eine Vorlesung besuchen. Das Format soll wieder so sein wie oben beschrieben.
Wichtig: Ihr Programm muss damit umgehen können, dass der SAX-Parser den Textinhalt eines Elements nicht unbedingt mit einem einzigen character-Event meldet.
Bewertung
Für das Übungsbeispiel 3 werden maximal 15 Punkte vergeben.
Im Rahmen des Abgabesprächs wird nicht nur die Korrektheit der Lösungen sondern auch (und vor allem)
das Verständnis überprüft. Für die einzelnen Aufgaben werden die maximal
möglichen Punkte nur dann vergeben, wenn die Lösung richtig ist und wenn die
StudentInnen in der Lage sind, diese Lösung zu erklären.
Die TutorInnen werden daher zu den vorgelegten Lösungen entsprechende
Verständnisfragen stellen.
Die Verteilung der Punkte erfolgt nach folgendem Schlüssel:
-
XML-Schema unversitaet.xsd plus 6 Instanzdokumente
universitaet.xml und test1.xml bis test5.xml: max. 5 Punkte
- Programm Dom.java max. 5 Punkte
- Programm Sax.java max. 5 Punkte