Im ersten Teil der Aufgabe erstellen Sie eine DTD und ein XML Dokument nach einer gegebenen Struktur.
Erstellen Sie eine DTD die einen Fußballverein in XML abbildet:
verein
.name
von verein
.spieler
von verein
.spieler
hat ein erforderliches Attribut trikotnr
,
und ein optionales Attribut bevorzugt
das ausschließlich
“mittelfeld”, “tor”, “flanke” oder “ersatzbank” beinhalten darf.spieler
hat Subelemente name
(genau einmal) und
position
(beliebig oft, auch keines).spieler
hat weiters ein Subelement news
(beliebig oft,
auch keines).news
besteht aus gemischtem Inhalt (beliebige Kombination von name
-Elementen und Text).Erstellen Sie weiters ein XML Dokument das der beschriebenen DTD entspricht und fügen Sie fünf Spieler ein.
Das XML Dokument soll die unterschiedlichen Möglichkeiten veranschaulichen und daher möglichst viele der beschriebenen Einschränkungen abdecken (optionale Elemente, verschiedene Werte für Attribute etc.).
Überprüfen Sie Ihre Lösung mit:
xmllint --dtdvalid verein.dtd verein.xml
bzw. mit
xmllint --valid verein.xml
wenn Sie die DTD im XML verknüpft haben.
verein.dtd
, verein.xml
Im zweiten Teil der Aufgabe erweitern Sie die DTD und das XML Dokument aus dem vorigen Beispiel um Namespaces.
Ändern Sie die DTD verein.dtd
so ab, dass alle Elemente im Namespace
http://www.dbai.tuwien.ac.at/fussball
mit dem Prefix dbai
liegen (Sie
dürfen hier keinen Default-Namespace verwenden). Die Attribute sollen im leeren
Namespace liegen.
Überprüfen Sie Ihre Lösung mit:
xmllint --dtdvalid verein-ns.dtd verein-ns.xml
bzw. mit
xmllint --valid verein-ns.xml
wenn Sie die DTD im XML verknüpft haben.
verein-ns.dtd
, verein-ns.xml
Für den dritten Teil der Aufgabe erstellen Sie eine XML Schema Definition die bis auf folgende Punkte äquivalent zur DTD mit Namespaces aus dem vorigen Beispiel ist:
verein
Element hat mindestens 4 spieler
-Subelemente (4 um Ihnen Schreibarbeit zu ersparen).trikotnr
von spieler
darf nur Werte zwischen 0 (exklusive) und
99 (inklusive) haben.Tipp: sehen Sie sich zu den Namespaces die Folien zu elementFormDefault und attributeFormDefault an.
Prüfen Sie die Schema Definition gegen das XML Dokument aus dem vorigen Beispiel:
xmllint --schema verein-ns.xsd verein-ns.xml
verein-ns.xsd
Ändern Sie die XML Schema Definition und die XML Datei aus den vorigen
Beispielen so ab, dass das Subelement name
von spieler
im Namespace
http://xmlns.com/foaf/0.1/
liegt und das Subelement name
von news
im
leeren Namespace liegt. Verwenden Sie dazu folgende XML Schema Definition für
das spieler/name
Element: foaf.xsd.
Tipp: sehen Sie sich include
und import
genauer an.
verein-ns-foaf.xsd
, verein-ns-foaf.xml
Prüfen Sie die Schema Definition gegen das XML Dokument:
xmllint --schema verein-ns-foaf.xsd verein-ns-foaf.xml
Die Beispiele müssen bis zum Abgabetermin auf unserem Server
(minteka.dbai.tuwien.ac.at) im Unterverzeichnis Beispiel2
verfügbar
sein (die Dateien werden automatisch abgesammelt und den Tutoren zur
Verfügung gestellt).
Insgesamt erstellen Sie also 7 Dateien (2 x DTD, 3 x XML, 2 x Schema).
Ü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 2 werden maximal 10 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!