XML-Know How

Ein alternativer Ansatz

Schematron ist eine neue Validierungssprache, die im Mai 2006 als Teil der Document Schema Definition Languages (DSDL) zu einem offiziellen, internationalen Standard wurde (ISO/IEC 19757-3 2006). Mit Hilfe dieser Technologie lassen sich Regeln formulieren, welche die inneren Beziehungen eines Dokuments überprüfen, um dadurch logische Fehler aufzudecken. Möglich wird dies durch den besonderen Aufbau von Schematron, der sich grundlegend von dem anderer Validierungssprachen unterscheidet.

Im Gegensatz zur DTD oder XSD, die beide einen grammatikorientierten Ansatz verfolgen, ist Schematron eine kontextorientierte Sprache. Das bedeutet, dass für ein und dieselbe Struktur unterschiedliche Regeln aufgestellt werden können, abhängig von dem Zusammenhang, in dem die Struktur gerade auftritt.

Wir wollen uns das an einem ersten Beispiel verdeutlichen. In dem folgenden Dokument sollen in Fließtexten Auszeichnungen erlaubt sein, in Zitaten dagegen nicht:

<absatz typ="fliesstext">
           Rick Jelliffe beschrieb <fett>Schematron</fett> als:
</absatz>
<absatz typ="zitat">
           „den Staubwedel der auch an Stellen kommt, die
          <fett>andere Validierungssprachen</fett> nicht
           erreichen können“.
</absatz>

Beim Betrachten dieser Struktur wird schnell klar, dass der erste Absatz die zuvor formulierte Anforderung erfüllt, der zweite hingegen nicht. Eine grammatikorientierte Regelsprache (wie z. B. eine DTD) wäre nicht in der Lage, Auszeichnungen in Absätzen in Abhängigkeit von den Attributwerten fliesstext bzw. zitat zu erlauben oder zu verbieten. Für eine kontextorientierte Sprache wie Schematron ist diese Unterscheidung dagegen kein Problem.

Regeln wie aus diesem Beispiel, die eine Beziehung zwischen verschiedenen Informationen eines Dokuments herstellen, werden als Businessrules bezeichnet. Beim Validieren einer XML-Instanz anhand eines Schematron-Schemas gilt, dass alles erlaubt ist, was nicht ausdrücklich durch die Businessrules verboten wurde. Klassische Validierungssprachen gehen dagegen genau umgekehrt vor, d. h. es ist alles verboten, was nicht explizit erlaubt wurde. In der Konsequenz ergibt sich daraus eine grundlegende Einschränkung für den Einsatz von Schematron:

Das Abbilden der Reihenfolge, Häufigkeit und Hierarchie, in der die Strukturen eines Dokumenttyps vorkommen dürfen, ist mit Schematron nur durch einen sehr großen Aufwand möglich. Es müsste schließlich jeder Fall ausgeschlossen werden, der gegen den gewünschten Aufbau verstößt. Deshalb ist und bleibt diese Art der Prüfung die Aufgabe der grammatikorientierten Validierungssprachen.

Akzeptiert man diese Einschränkung wird klar, dass Schematron keine Alternative zu den bestehenden Technologien darstellen kann, sondern eine Ergänzung dazu ist. Der beste Weg, um einen hochwertigen Datenbestand sicherzustellen, ist deshalb die Kombination von beidem. So kann beispielsweise zunächst mit einem XSD-Schema das grundsätzliche Regelwerk festgelegt werden, dem alle XML-Instanzen eines Dokumenttyps entsprechen müssen. Ein Schematron-Schema formuliert dann weitere Einschränkungen, um dieses Regelwerk nach logischen Gesichtspunkten zu verbessern.