XML - Grundlagen, Prinzipien und Anwendungen

Veranstaltung im Sommersemester 2006

Aufgabe 10 - Erstellen eines Schematron Schema für das XML Dokument

Abgabe bis 26.6.2006


In den Aufgaben 1 und 5 wurden für ein Dokument jeweils ein Schema geschrieben, um das Dokument dann gemäss diesem Schema validieren zu können, also die Gültigkeit des Dokumentes gemäss definierten Regeln überprüfen zu können. In Aufgabe 1 war dieses Schema eine DTD, in Aufgabe 5 ein XML Schema. In dieser Aufgabe soll nun ein drittes Schema erstellt werden, und zwar in der Schemasprache Schematron.

Die Abgabe der Übung besteht darin, das Schematron Schema zusammen mit dem XML Dokument und dem aus dem Schematron Schema generierten Stylesheet an den Betreuer zu mailen, am besten durch Klick auf den Abgabe Übung 10 Link. Das Schematron Schema muss nicht-trivial sein, und die erstellten Regeln (Assertions und Reports) müssen ausreichend kommentiert sein, um ihren Sinn verstehen zu können.


Grundidee

Schematron ist eine Schemasprache, die grundlegend anders arbeitet als DTDs oder XML Schema. DTDs und XML Schema sind vorwiegend Grammatik-basiert, während Schematron Regel-basiert ist. Ein Schematron Schema definiert eine Menge von Regeln, deren Einhaltung bei der Validierung eines Dokuments überprüft wird. Es ist zwar prinzipiell möglich, auch eine Grammatik in dieser Regel-basierten Art zu definieren, in der Praxis wird man jedoch ein Schematron Schema mit einer Grammatik-basierten Schemasprache kombinieren, um so jeweils das optimale Tool für eine gegebene Fragestellung (Grammatik-Definition oder allgemeine Regeln) verwenden zu können.


Vorgehen

Um ein Schematron Schema zu erstellen, anzuwenden und zu testen, bietet sich die folgende Vorgehensweise an:

  1. Zunächst einmal sollte man sich überlegen, welche Randbedingungen man beim Schreiben des Dokumentes bzw. der DTD oder des XML Schemas im Kopf hatte, die sich nicht mit dem Grammatik-basierten Ansatz von DTD und XML Schema festhalten liessen. Dies können sehr einfache Ranbedingungen sein (z.B. die Abhägigkeit von zwei Attributwerten, z.B. eine Re-release Datum muss nach einem Release-datum liegen), aber auch wesentlich komplexere Fragestellungen.
  2. Die Randbedingungen müssen nun in XPath formuliert werden. Dabei kann Wissen aus der Grammatik verwendet werden, so dass sich gewisse Pfadausdücke u.U. einfacher formulieren lassen. Es sollte dabei allerdings immer im Kopf behalten werden, dass auch Schematron beschränkt ist in seiner Ausdrucksfähigkeit, denn durch seine Verwendung von XPath Ausdrücken ist es auf einfache Boole'sche Ausdrücke eingeschränkt, höherwertige logische Ausdrücke (z.B. first-order Logic) lassen sich in XPath (und damit Schematron) nicht ausdrücken.
  3. Die formulierten XPath Ausdrücke müssen nun in einem Schematron Schema verwendet werden. Die beste Anleitung dazu ist die Schematron Spezifikation selber, die gut verständlich und schrittweise die (sehr wenigen) Sprachmittel von Schematron erklärt (alternativ gibt es auch noch ein Schematron Tutorial bei ZVON).
  4. Um das Schematron Schema anwenden zu können, muss es interpretiert werden. Wir verwenden dafür ein XSLT Programm (entnommen der "Reference Implementation of Schematron 1.5"), dass das Schematron Schema in ein XSLT Programm "kompiliert". Dieses generierte XSLT Programm ist dann der Validierungscode, der ausgeführt wird, um Dokumente gegen das Schematron Schema zu validieren. Die Verwendung des XSLT Prozessors kann genauso wie in den Aufgaben 7 und 8 erfolgen. Dieser XSLT-orientierte Ansatz hat den Vorteil, dass man ausser einem normalen XSLT Prozessor keine spezielle Software braucht, um Schematron zu verwenden.
  5. Tritt bei der Schematron-Validierung des XML-Dokumentes ein Fehler auf, so stimmt das Dokument nicht mit den definierten Regeln überein. Dies kann daran liegen, dass das Dokument tatsächlich nicht korrekt ist, oder daran, dass bei der Formulierung einer Schematron Regel ein Fehler gemacht wurde. Das Schematron Schema und/oder das Dokument müssen deshalb solange korrigiert werden, bis bei der Schematron Validierung keine Assertions mehr verletzt werden (Reports sind keine Fehler und können natürlich erzeugt werden, z.B. um Statistiken auszugeben).

Resultat dieser Vorgehensweise sind die für die Abgabe geforderten Dokumente, nämlich das Schematron Schema zusammen mit dem XML Dokument und dem aus dem Schematron Schema generierten Stylesheet.


please send comments to xml-vl@dret.net
last modification on Sunday, 18-Jun-2006 11:45:00 CEST
valid CSS!valid XHTML 1.0!