SCHEMA Blog

Corporate Blog der SCHEMA GmbH

Automatisierte Unterstützung bei der Qualitätssicherung durch Schematron

Hinterlasse einen Kommentar

Bei der Qualitätssicherung von Technischer Dokumentation wird oft nach dem Vier-Augen-Prinzip gearbeitet. Doch es gibt kleine Unsauberkeiten oder Fehler, die sich auch nach gründlicher Kontrolle immer wieder in den Text schleichen. Praktisch wäre es, gewisse formale Regeln, wie zum Beispiel die Groß-/Kleinschreibung in Überschriften, automatisiert zu prüfen. Hier setzt die Schemasprache Schematron an (ein ISO/IEC-Standard). Sie bietet die Möglichkeit, in XML vorliegende Textinhalte automatisiert und kontextsensitiv zu analysieren und zu überprüfen.

Im Gegensatz zu anderen Prüfmechanismen basiert Schematron nicht auf einer Grammatik- oder Rechtschreibprüfung, sondern überprüft XML-Dokumente anhand von festgelegten Regeln, die der Anwender selbst definieren kann.

Durch eine Schematron-Regel kann zum einen der Inhalt eines Dokumentes oder ganz spezifisch innerhalb von bestimmten XML-Elementen überprüft werden. So wird zum Beispiel verbotene Terminologie leicht gefunden. Auch doppelte Leerzeichen oder inhaltslose Überschriften und Paragraphen können so verhindert werden.

Zusätzlich gibt es die Möglichkeit, die Struktur des Dokumentes zu analysieren. So kann sichergestellt werden, dass Elemente wie das Inhaltsverzeichnis an der richtigen Stelle stehen. Möglich ist es so z. B. auch, die Anzahl von Listenpunkten in einer Liste zu überprüfen.

Die Funktion von Schematron

Die Funktion hinter Schematron basiert auf XSL und XPath. Die beiden Programmiersprachen dienen der Navigation im Dokument und der anschließenden Überprüfung von Bedingungen. XPath funktioniert ähnlich wie übliche Pfadangaben oder URLs, was den meisten geläufig ist. In einer Schematron-Regel (rule) werden dann verschiedene Bedingungen eingebettet, gegen die der Inhalt der XML-Elemente geprüft werden soll.

Beispiel:

<rule context=“ul | ol“>

<assert test=“count(li)<=7″>Die Liste enthält mehr als sieben Listenpunkte. </assert>

</rule>

Mit dieser Regel werden alle Listen auf die Anzahl ihrer Listenelemente überprüft. Liefert die Regel, die unter test formuliert wurde, den Wahrheitswert false zurück, wird der Inhalt des assert-Statements ausgegeben.

Regelsyntax

Der Aufbau einer Regel folgt immer demselben Prinzip und besteht hauptsächlich aus fünf unterschiedlichen Elementen: <schema>, <pattern>, <rule>, <assert> bzw. <report> und <ns>.

Im rule-Statement wird durch das Attribut context ein oder mehrere XML-Elemente festgelegt, deren Kontext oder Inhalt überprüft werden soll. Auf alle Knoten, auf die diese Eigenschaft zutrifft, wird die im assert- oder report-Element unter dem Attribut test definierte Regel angewandt. Der Inhalt der assert- oder report-Elemente wird anschließend als Fehlermeldung ausgegeben.

Fehlermeldungen

Grundsätzlich gibt es zwei Möglichkeiten, eine Meldung auszulösen. Die erste Möglichkeit ist das assert-Statement. Es löst immer dann eine Meldung aus, wenn die Bedingung, die mit ihm gekoppelt ist, nicht erfüllt wird (siehe Beispiel). Die zweite Möglichkeit ist das report-Statement. Das report-Statement löst im Gegensatz zum assert-Statement eine Meldung aus, wenn die Bedingung, die mit ihm gekoppelt ist, erfüllt wird. Eine Unterscheidung ist jedoch nicht zwangsläufig notwendig. Mit Hilfe der Negation können alle Regeln mit beiden Statements formuliert werden.

Hierarchisierung der Fehlermeldungen

Die Fehlermeldungen können zudem hierarchisiert werden. Ähnlich wie bei Warnhinweisen kann ihnen eine Stufe zugewiesen werden, die aussagt, wie gravierend der Fehler ist. Die Fehler-Hierarchien werden von Schematron nicht vorgegeben. Zwischen welchen Warnstufen gewählt werden kann, kommt auf die jeweilige Implementierung an. Das Content Management System SCHEMA ST4 bietet beispielweise folgende Hierarchisierung für Fehlermeldungen:

  • Information
  • Warnung
  • Fehler
  • kritischer Fehler

Darüber hinaus gibt es die Möglichkeit, Fehlermeldungen auch dynamisch zu generieren, indem Werte abgefragt und in der Fehlermeldung ausgegeben werden.

Schematron in SCHEMA ST4 – Auto- und Expertenmodus

Schematron-Eingabemaske in SCHEMA ST4

Auch in SCHEMA ST4 wird Schematron bereits seit einiger Zeit unterstützt. Durch das Dialogfeld, in dem die Regeln formuliert werden können, bietet es eine sehr leichte Handhabung. Es ist möglich, zwischen zwei verschiedenen Modi für die Formulierung von Regeln zu wechseln – Experten-Modus und Auto-Modus. Im Experten-Modus gibt es die Möglichkeit, relativ frei den Code für die entsprechende Regel zu formulieren. Im Auto-Modus erhält der Verfasser der Regel mehr Unterstützung und formuliert den Code nicht frei. Mit Hilfe einer Eingabemaske werden die wichtigsten Bestandteile einer Regel vom Verfasser abgefragt und anschließend automatisch in einer konformen Regel zusammengefügt.

Die Formulierung von Regeln in SCHEMA ST4 ist leicht abgewandelt. Es kann nur das assert-Statement und kein report-Statement genutzt werden. Da aber mit Hilfe der Negation jede Regel sowohl mit dem assert- als auch mit dem report-Statement formuliert werden kann, stellt dies in keiner Weise eine funktionelle Einschränkung, sondern lediglich eine Vereinfachung für den Nutzer dar. Das Verschachteln von Regeln wird in SCHEMA ST4 über Sammelregeln gelöst. So können auch kompliziertere Regeln umgesetzt werden.

Schematron-Report in SCHEMA ST4

Selbst erstellte Schematron-Regeln verwendet man in ST4 mit dem Schematron-Report

Die Integration von Schematron in SCHEMA ST4 macht es besonders für Nutzer mit weniger Programmierkenntnissen deutlich einfacher, Regeln zu bearbeiten, selbst eigene Regeln zu formulieren und diese anzuwenden.

Eine Schematron-Regel formulieren

Um eine Schematron-Regel zu formulieren, kann es helfen, die gewünschte Regel zunächst in Worten auszudrücken. Anschließend kann sie mit Hilfe von XPath und XSL in eine Schematron-Regel ausformuliert werden. Grundsätzlich sollten dabei folgende Punkte beachtet werden:

  • Aussagekräftige Fehlermeldung formulieren, um den Fehler und den Grad seiner Schwere eindeutig identifizieren zu können.
  • Sammelregeln konstruieren (z. B. spezifische Regeln für Projekt/Kunden zusammenfassen).
  • Konsistente und aussagekräftige Namen und Beschreibungen für die Regeln formulieren.
  • Für die Nutzung in SCHEMA ST4: Bereits formulierte Regeln kopieren und anpassen.

Anwendungsbeispiele

Titel ohne doppelte Leerzeichen:

<rule context=“node | textmodule“>

<assert test=“not(contains(title,‘  ‚))“> Der Titel enthält doppelte Leerzeichen. </assert>

</rule>

Titelseite im Projekt vorhanden:

<rule context=“node[@class=’Project‘]“>

<assert test=“node[@class=’Title‘]“> Im Projekt fehlt die Titelseite. </assert>

</rule>

Fazit

Im Hinblick auf Qualitätssicherung kann Schematron eine große Hilfe sein. Mit etwas Übung geht es schnell, neue Regeln zu formulieren und auszuwerten. Mit Schematron können XML-Dokumente noch einmal auf eine andere Art und Weise überprüft werden als mit herkömmlichen Schemasprachen. Eine Kombination mehrerer Schemasprachen kann sinnvoll sein. Die Verwendung von Schematron in SCHEMA ST4 kann viel Arbeit und Zeit durch eine automatische Prüfung sparen, da sich ganze Regelsätze automatisiert ausführen lassen. Die Formulierung der Regeln ist auch mit geringerem Vorwissen schnell und einfach zu erlernen, da SCHEMA ST4 zusätzlich Unterstützung bietet. Bei speziellen Konventionen und immer wieder auftretenden Fehlern ist es durchaus sinnvoll, über das Anlegen einer oder mehrerer Schematron-Regeln nachzudenken.

 

Katharina Kirchner, ehemalige Praktikantin und aktuell Werkstudentin bei CARSTENS + PARTNER. Sie studiert „Technische Redaktion und Kommunikation“ an der Hochschule München.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s