Schematron

Es genügt häufig nicht, XML-Daten bloß gegen eine DTD zu validieren, vor allem, wenn die DTD (oder das XML-Schema) zu generisch ist. Andererseits kann es sein, dass sich eine DTD, die zu fein ausdifferenziert ist, viele Fälle nicht abbildet, die in der Praxis vorkommen und die sich abbilden lassen müssten. Letzteres führt dann dazu, dass Elemente oder Attribute der DTD zweckentfremdet werden oder dass sich die Ersteller der Dokumente nicht mehr um Validierung kümmern. Das wiederum ist sehr schlecht, da Validierung gegen DTD oder Schema ein 1/0-Ergebnis hat: entweder valide oder nicht. Man kann mit diesen Grammatik-basierten Überprüfungen nicht abbilden, dass eine Verletzung der Validität unterschiedliche, möglicherweise für einen bestimmten Zweck ganz harmlose Auswirkungen haben. Eine weitere Schwäche von DTDs ist, dass man damit keine konditionalen Beziehungen überprüfen kann (Wenn die ISBN mit 978-4-711 beginnt, muss eine englische Übersetzung des Titels und des Klappentexts enthalten sein).

An dieser Stelle greifen alternativ oder zusätzlich zur DTD Schematron-Regeln, die man flexibel für beliebige XML-Dokumententypen (incl. der XML-Formate von Word und InDesign) aufstellen kann. Man kann damit z. B. bei ansonsten DTD-invaliden Daten diejenigen Sachverhalte in den Daten feststellen, die eine EPUB-Veröffentlichung oder einen automatischen Umbruch bekanntermaßen unmöglich machen. Oder man generiert Warnungen, wenn ein bestimmtes Vokabular oder bestimmte Abkürzungen vorkommen, oder wenn diese gerade nicht vorkommen.

Schematron braucht immer auch XSLT oder zumindest XPath, denn die Bedingungen werden in XPath formuliert und mit einem XSLT-Prozessor überpüft. Besonders mächtig ist Schematron in Verbindung mit einem XSLT-2-Prozessor wie saxon. Erst dann sind umfassende Analysen von .docx- oder IDML-Dokumenten effizient umsetzbar. Die Schematron-Meldungen, die man übrigens in natürlicher Sprache formulieren kann, können per XSLT auch wieder als Kommentare in die geprüften Daten zurückgeschrieben werden. Dadurch sind Manuskript- und Satzdatenprüfungen wie unter Datenprüfung möglich.