David Maus

Welche Möglichkeiten gibt es, ein XML Dokument mit einem Schema zu verknüpfen?

Wenn es um das Validieren von XML-Dokumenten geht, gibt es nicht nur verschiedene Schematechnologien, sondern auch verschiedene Mechanismen, ein einzelnes XML-Dokument (Dokumentinstanz) mit Schemadateien zu verknüpfen.

Die untenstehenden Mechanismen beruhen alle darauf, die Verknüpfung eines Dokumentes mit einem oder mehreren Schemata im jeweiligen Dokument festzuhalten. Das ist für sich genommen weder gut noch schlecht, allerdings auch nicht die einzige und nicht immer die beste Variante. Der grundsätzliche Nachteil liegt darin, dass die Verknüpfung zwischen Dokumentinstanz und Schemadatei Teil der Dokumentinstanz ist und eine Änderung der Verknüpfung eine Änderung der Dokumentinstanz erforderlich macht. Eine Änderung der Verknüpfung kann aus verschiedenen Gründen erfolgen:

Während eine Anpassung der Dokumentinstanz bei einem, zwei oder vielleicht auch noch zehn Dokumenten halbwegs handhabbar ist, wird die Sache bei mehreren dutzend oder gar hunderten von XML-Dokumenten zu einer echten Herausforderung.

Hinzu kommt, dass nur die Verknüpfung über xml-model sowohl die gleichzeitige Verwendung verschiedener Schemadateien, als auch die gleichzeitige Verwendung verschiedener Schematechnologien erlaubt. Die Verwendung der Document Type Declaration ebenso wie die Verwendung der Schema Locating Hints bindet an die jeweils unterstützte Technologie.

Lange Rede, kurzer Sinn: Wenn ich die Verknüpfung von Dokumentinstanz und Schema in das Dokument einbetten muss, dann bevorzuge ich xml-model, weil sie mir die größte Flexibilität hinsichtlich der Schematechnologien lässt.

Wenn ich es frei entscheiden kann, dann definiere ich die Verknüpfung außerhalb der Dokumentinstanz.

Document Type Declaration

Document Type Declaration
Schematechnologien Document Type Declaration
Mehrere Schemadateien Nein
Beispiel
<!DOCTYPE TEI SYSTEM "http://example.com/tei-transcript.dtd">
Literatur

W3C XML Schema

W3C XML Schema
Schematechnologien W3C XML Schema
Mehrere Schemadateien Bedingt
Anmerkung Die Schema Locating Hints verknüpfen je einen XML Namensraum mit je einem Schema
Beispiel
<TEI xmlns="http://www.tei-c.org/ns/1.0"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://www.tei-c.org/ns/1.0 http://example.com/tei-transcript.xsd"></TEI>
Literatur

xml-model Processing Instruction

xml-model Processing Instruction
Schematechnologien Document Type Defintion, W3C XML Schema, RelaxNG, Schematron, …
Mehrere Schemadateien Ja
Beispiel
<?xml-model href="http://example.com/tei-transcript.rnc" type="application/relax-ng-compact-syntax"?><?xml-model href="http://example.com/tei-transcript.sch" schematypens="http://purl.oclc.org/dsdl/schematron"?>
Literatur
  • ISO/IEC 19757-11 - Information Technology - Document Schema Definition Languages (DSDL) - Part 11: Schema association
  • Associating Schemas with XML documents 1.0 (Third Edition), http://www.w3.org/TR/xml-model/