XML-Know How

Textuelle Beziehungen

Zu aufwändigen Nacharbeiten führt häufig der Versuch des Autors, durch „Tricks“ das spätere Erscheinungsbild seines Werkes bereits bei der Erfassung zu simulieren. Diese Verschlimmbesserung der Textsubstanz führt zu hohen Korrekturkosten im Satz oder zu manuellem „Datenputzen“ im Zuge der Konvertierung. Solche Fehlbedienungen systematisch aufzuspüren bedeutet, die Qualität der Daten bereits im Vorfeld deutlich zu erhöhen.

Als Beispiel möge das Eintippen einer Sequenz von Punkten dienen, mit der der Autor eine Auspunktierung (Füllzeichen von Tabulatoren, z. B. bei einem Inhaltsverzeichnis) darzustellen versucht.

Die Anforderung lautet dann:

„Die Inhalttexte des Dokuments dürfen keine Folge von mehr als drei Punkten enthalten. Füllzeichen sind mit einem entsprechenden Element anzugeben.“

Richtig:

<inhaltsverzeichnis>
    <eintrag>
        1.Einleitung<fuellzeichen="punkte"/>S.2
    </eintrag>
    …
</inhaltsverzeichnis>

Falsch:

<inhaltsverzeichnis>
    <eintrag>
        1.Einleitung ........................ S. 2
    </eintrag>
    …
</inhaltsverzeichnis>

Businessrule:

<rule context="*[text()]">
    <report test="text()[contains(.,‘....‘)]">
        Vorsicht!Es kommt eine Reihe von mehr als drei Punkten
        vor. Diesdeutet auf eine Fehlcodierung der Daten hin.
       (Wahrscheinlich soll eine Zeile auspunktiert werden.)
        Bitteüberprüfen.
    </report>
</rule>

Durch diese Regel werden alle Elemente adressiert, die Text enthalten. Anschließend wird durch die contains()-Funktion getestet, ob die einzelnen Texte eine Reihe von vier oder mehr Punkten enthalten.

Auch zahlreiche andere Eingabefehler bei der Erfassung der Inhalte, wie beispielsweise das Erzwingen einer Leerzeile durch einen leeren Absatz, lassen sich mit Schematron auf ähnliche Weise erkennen.