Schematron-Befehle beschreiben die regelbasierte Validierungssprache Schematron für XML-Dokumente. Sie wurde 1999 von Rick Jelliffe entwickelt, um Aussagen über das Vorhandensein oder Fehlen von Mustern in XML-Bäumen zu treffen, und ist als ISO/IEC 19757-3 standardisiert.

Grundprinzip

Anders als grammatikbasierte Schemas prüft Schematron Regeln mit XPath-Ausdrücken. Ein Schema besteht aus schema, pattern und rule-Blöcken:

<schema xmlns="http://purl.oclc.org/dsdl/schematron">
  <pattern>
    <rule context="buch">
      <assert test="titel">Jedes Buch braucht einen Titel.</assert>
      <report test="kapitel">Kapitel vorhanden (nur Information).</report>
    </rule>
  </pattern>
</schema>

assert erzeugt einen Fehler, wenn der test-Ausdruck falsch ist; report erzeugt eine Meldung, wenn er wahr ist. Das context-Attribut legt fest, auf welche Elemente die Regel angewendet wird.

Wichtige Elemente

  • schema, pattern, rule — Struktur des Schemas
  • assert, report — Prüfungen mit XPath-test
  • name, value-of — dynamische Textausgabe in Meldungen
  • let — Variable für wiederverwendbare XPath-Ausdrücke
  • phase/active — verschiedene Prüfphasen für dasselbe Schema
  • include, ns, p — Modularisierung, Namespace- und Dokumentation

Stärken

Schematron glänzt bei Geschäftsregeln, die über die reine Struktur hinausgehen: Querfeld-Prüfungen über mehrere Elemente (Co-Occurrence Constraints), abhängige Werte und kontextabhängige Bedingungen. Die Validierungsergebnisse werden als SVRL (Schematron Validation Report Language) ausgegeben. Implementierungen laufen meist als XSLT-Transformationen, etwa ISO Schematron oder SchXslt; Oxygen XML Editor integriert Schematron direkt.

Schematron ergänzt grammatikbasierte Schemas wie DTD-Befehle, RELAX-NG-Befehle und XSD-Befehle — es prüft nicht die Struktur, sondern die Regeln darüber.

Verwandte Grundlagen: XPath-Befehle, XML-Befehle.