Schematron

(Auszug aus "DocBook-XML: Medienneutrales und plattformunabhängiges Publizieren" von Thomas Schraitle)

DocBook 5 enthält im Vergleich zur DTD eine zusätzliche Schemasprache namens Schematron die von RickJelliffe entwickelt wurde. DTD, RELAX NG und W3C-Schema legen den Fokus der Inhaltsmodelle auf die Eltern-Kind-Beziehung. Im Gegensatz dazu hat Schematron Ähnlichkeiten zu XSLT/XPath und beschreibt Validierungsregeln anhand von so genannten Zusicherungen (engl. assertions). Für gewöhnlich wird Schematron nicht allein verwendet, sondern ergänzt ein bereits vorhandenes RELAX NG- oder W3C-Schema. (Deshalb bezeichnet sein Erfinder Rick Jelliffe Schematron als "einen Staubwedel, um Teile zu erreichen, die von anderen Schemasprachen nicht erreicht werden können.")

Anmerkung: Brauche ich Schematron?
Eine Validierung, die Schematron einbezieht, ist eine weitere Absicherung gegen Fehler. Jedoch lässt sich ein DocBook 5-Dokument auch ohne Schematron validieren. Dies ist besonders für diejenigen interessant, bei denen der XML-Parser diese Schemasprache nicht unterstützt. Allerdings müssen Sie selbst dafür sorgen, dass Randbedingungen eingehalten werden. Alle Randbedingungen sind in der Datei docbook.sch enthalten.

Schematron besteht hauptsächlich aus Schematron-Regeln. Eine Regel besteht für gewöhnlich aus zwei Komponenten:

  1. Der Kontext: Jede Regel identifiziert das Objekt das überprüft werden soll. Für gewöhnlich ist dies ein Element oder Attribut in XPath-Notation.
  2. Die Zusicherung: Hiermit wird überprüft, ob eine bestimmte Annahme erfüllt ist. Auch dies wird in XPath ausgedrückt.

Beide Komponenten finden Sie in einem s:pattern-Element. Für DocBook 5 bedeutet dies, dass Schematronmuster in das RELAX NG- und W3C-Schema eingebettet sind. Für das Element book sieht das im RELAX NG-Schema so aus:

Beispiel: Schematronmuster für version in book

RNC

namespace s = "http://www.ascc.net/xml/schematron"
db.book =
  ## A book
  [
    s:pattern
      name = "Root must have version"
      s:rule
      context = "/db:book"
      s:assert
        test = "@version"
        "The root element must have a version attribute."
      ]
  ]
 ]
]

RNG

<element name="book" xmlns:s="http://www.ascc.net/xml/schematron">
    <s:pattern name="Root must have version">
        <s:rule context="/db:book">
            <s:assert test="@version">The root element must have a version attribute.</s:assert>
        </s:rule>
    </s:pattern>
</element>

Zeile 1 RNC und RNG: Der Namensraum von Schematron v1.5.
Zeile 2 RNC und Zeile 1 RNG: Für das Element book wird im RELAX NG-Schema ein Schematronmuster angegeben.
Zeile 5 RNC und Zeile 2 RNG: Das Schematronmuster schließt ein s:rule und ein s:assert ein.
Zeile 7 RNC und Zeile 3 RNG: Die Schematron-Regel passt auf alle book-Elemente im Namensraum von DocBook 5, die als Wurzelelement im Dokument erscheinen. Dies wird als Kontext definiert, bei dem sich alle Zusicherungen darauf beziehen.
Zeile 9 RNC und Zeile 4 RNG: In test wird überprüft, ob in einem book-Element ein version-Attribut vorhanden ist. Fehlt das Attribut, wird die entsprechende Meldung ausgegeben.

Dieser Abschnitt konnte nur an der Oberfläche dieses Themas bleiben, daher sei für detailiertere Informationen auf die Hauptseite von Schematron verwiesen.

  

<< zurück vor >>
Tipp der data2type-Redaktion:
Zum Thema DocBook bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2009 Millin Verlag
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "DocBook-XML: Medienneutrales und plattformunabhängiges Publizieren" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Millin Verlag, Siebengebirgsring 36, 53797 Lohmar, info(at)millin.de