Donnerstag, 9. Februar 2012


Artikel

Juli 2009 | Artikel

Über die Eignung von Schema-Sprachen zur Prüfung von XML-Dokumenten

(Link zum Artikel: http://www.entwickler-magazin.de///002459)

Jedes Spiel hat seine Regeln

Text: Björn Dünckel, Marko Hedler und Manuel Montero Pineda
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share

Der Umgang mit XML-Dokumenten, sei es im Bereich des elektronischen Publizierens, als Datenbankschnittstelle oder als allgemeine Sprache zum Austausch von strukturierten Dokumenten, ist vielen von uns vertraut. Eine wichtige Rolle spielen dabei Schema-Sprachen wie DTD, XML Schema oder RelaxNG, mit denen die grammatikalischen Regeln für ein XML-Dokument beschrieben werden. Doch reicht die Mächtigkeit der eingesetzten grammatikbasierten Regelwerke aus, um die speziellen Anforderungen an bestimmte Dokumenttypen hinreichend gut zu prüfen?

Teil 1   Teil 2   Teil 3   Teil 4   

Wurde ein XML-Dokument als valide in Bezug auf diese Regeln geprüft, erhält es die Freigabe zur weiteren Verarbeitung durch Publishing-Werkzeuge, Datenbanken oder Reporting-Tools. Nicht zu Unrecht gilt die Prüfung der Validität für viele dieser Anwendungen als Freigabekriterium für automatisierte Abläufe, stellt sie doch die strukturelle Korrektheit der Dokumente sicher. Im Folgenden werden wir uns der eingangs genannten Fragestellung nähern und mögliche Lösungsansätze unter Verwendung der Sprache ISO Schematron, einer regelbasierten Schemasprache zur Überprüfung von Business Rules in XML-Dokumenten, vorstellen.

Entscheidend bei der Validierung von XML-Dokumenten ist zum einen die Qualität der zugrunde liegenden Regeln, ausgedrückt in einer Schemasprache (z. B. DTD, XSD Relax NG etc.), aber auch die Mächtigkeit der eingesetzten Sprache, die allein durch die jeweiligen Standards begründet ist. Diese so genannten grammatikbasierten Schema-Sprachen regeln z. B. das Auftreten und die Anordnung von Elementen, die Häufigkeit jedes Elements sowie die Datentypen von Elementen und Attributen. Abhängigkeiten dieser Strukturen zu anderen Elementen oder Attributen im Dokument können je nach Schemasprache nicht oder nur teilweise ausgedrückt werden. Dies birgt folglich das Problem, dass einige Regeln zwar sprachlich formuliert werden können, mit einer der genannten Schema-Sprachen jedoch nicht zu 100 % abbildbar sind. Insgesamt können wir daher drei Stufen der Prüfung von XML-Dokumenten unterscheiden:

  • Prüfung der Syntax: Daten liegen in XML-Syntax vor und entsprechen allen Regeln, die im Standard festgelegt sind (Wohlgeformtheit).
  • Prüfung der Grammatik: Die Daten entsprechen den in der Grammatik definierten Regeln für deren Reihenfolge, Häufigkeit, Hierarchie und Datentyp.
  • Prüfung der Kohärenz: Zwischen den einzelnen Informationseinheiten bestehen logische Beziehungen, die sich aus der Funktionsweise der jeweiligen Anwendung (Business) ergeben. Aus diesen Beziehungen ergeben sich einschränkende Regeln, die eingehalten werden müssen, um korrekte Daten zu erhalten, so genannte Business Rules.

Damit XML-Daten erstellt werden können, die die Anforderungen bei der Verarbeitung möglichst optimal erfüllen, bedarf es Technologien, mit denen alle drei oben genannten Regeln beschrieben und geprüft werden können. Um eine korrekte Syntax sicherzustellen, wird ein Parser eingesetzt. Dieser überprüft, ob alle Regeln der XML-Spezifikation eingehalten wurden und ein wohlgeformtes XML-Dokument vorliegt. Die Grammatik eines Dokumenttyps lässt sich mit einer Schemasprache festlegen und mit einem validierenden XML-Parser überprüfen. Daten, die hinsichtlich ihrer Grammatik korrekt sind, werden als gültig oder valide bezeichnet. Um die logischen Beziehungen zwischen Informationseinheiten eines XML-Dokuments zu beschreiben, ist nun eine Technologie nötig, die die Strukturen abhängig vom Kontext eines XML-Fragments auswerten kann. Betrachten wir zum Einstieg ein Beispiel aus dem dokumentenzentrierten XML-Umfeld – ein Docbook-Fragment:

  1. <para>
  2. In order to view this text in a browser, you have to start the browser.
  3. <footnote>
  4. <para>browser: tool to view (X)HTML.
  5. <footnote>
  6. <para>(X)HTML: XML Hypertext Markup Language</para>
  7. </footnote>
  8. </para>
  9. </footnote>
  10. </para>

Gemäß Docbook 5.1 handelt es sich bei diesem Beispiel um eine valide XML-Struktur. Auch die Besonderheit, dass hier zwei Fußnoten ineinander geschachtelt sind, wird durch das XML-Schema von Docbook abgebildet. Der PDF-Rendering-Prozess mit den Standardskripten zu XSL-FO schlägt jedoch an dieser Stelle fehl und endet mit einer Meldung des FO-Formatierers, es sei ungültiger FO-Code erzeugt worden. Offensichtlich handelt es sich bei diesem Beispiel um eine Dokumentstruktur, die zwar durch das XML-Schema als valide eingestuft wird, vom Standard-Docbook-XSL-FO-Skript jedoch so nicht berücksichtigt wurde. Die Frage lautet deshalb: Wie aussagekräftig ist die Prüfung der Validität eines XML-Dokuments für die Stabilität und die Qualität der nachfolgenden Prozesse? Sind gültige Dokumente auch gleichzeitig korrekte Dokumente?

Teil 1   Teil 2   Teil 3   Teil 4   

Kommentare

Gravatar Stephan Zehrer 27.07.2009
um 22:51 Uhr
Ich versuche gerade das "ISO Schematron" in mein Weltbild unterzubringen. Ihr redet doch von nichts anderem als von einer Ontology oder?
Also warum nocht RDF, RDFS, und OWL verwenden?
#zitieren