Beispiel 2

Aufgabenstellung

Document Type Definition

Im ersten Teil der Aufgabe erstellen Sie eine DTD und ein XML-Dokument nach einer gegebenen Struktur.

Erstellen Sie eine DTD für eine Softwarefirma, die ihre Projekte und Teams in XML abbildet.

Erstellen Sie weiters ein XML-Dokument, das der beschriebenen DTD entspricht und zumindest 3 Projekte enthält.

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 dem Befehl

xmllint --dtdvalid firma.dtd firma.xml

bzw. mit

xmllint --valid firma.xml

wenn Sie Ihre DTD direkt im XML-Dokument verknüpft haben.

Document Type Definition mit Namespaces

Im zweiten Teil der Aufgabe erweitern Sie Ihre DTD und das XML-Dokument aus dem vorigen Beispiel um Namespaces.

Ändern Sie die DTD firma.dtd so ab, dass alle Elemente im Namespace http://www.dbai.tuwien.ac.at/software/ mit dem Prefix soft liegen. Verwenden Sie für Ihre Lösung keinen Default-Namespace. Die Attribute sollen im leeren Namespace liegen.

Überprüfen Sie Ihre Lösung mit dem Befehl

xmllint --dtdvalid firma-ns.dtd firma-ns.xml

XML Schema

Für den dritten Teil der Aufgabe erstellen Sie eine XML-Schema-Definition, die bis auf folgende Punkte der DTD mit Namespaces aus dem vorigen Beispiel entspricht:

Das Verwenden der Datentypen ID und IDREF ist in diesem Beispiel nicht erlaubt. In XML Schema gibt es eine elegantere Möglichkeit.

Tipp: Sehen Sie sich zu den Namespaces die Folien zu elementFormDefault und attributeFormDefault, sowie zu key/keyref an.

Prüfen Sie die Schema-Definition gegen das XML-Dokument aus dem vorigen Beispiel mit dem Befehl

xmllint --schema firma-ns.xsd firma-ns.xml

Zusatz: XML-Schema in mehreren Dateien

Erstellen Sie auf Basis des letzten Beispiels eine neue XML-Schema-Definition und eine neue XML-Datei mit folgender Änderung: Verwenden Sie für das beschreibung-Element den Typ aus folgender XML-Schema-Definition: zusatz.xsd. Ändern Sie den in der Datei enthaltenen Typ BeschreibungTyp so ab, dass es noch ein zusätzliches, optionales Attribut format enthält. Dieses soll vom Typ string sein.

Tipp: Sehen Sie sich redefine genauer an.

Prüfen Sie die Schema-Definition gegen das XML-Dokument aus dem vorigen Beispiel mit dem Befehl

xmllint --schema firma-zusatz.xsd firma-zusatz.xml