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

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

Schema Locating Hints

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

xml-model Processing Instruction

Schematechnologien
  • Document Type Defintion
  • W3C XML Schema
  • RelaxNG
  • Schematron
  • ...
Mehrere Schemadateien
Ja
Beispiel
<? href="http://example.com/tei-transcript.rnc" type="application/relax-ng-compact-syntax"?> <? href="http://example.com/tei-transcript.sch" schematypens="http://purl.oclc.org/dsdl/schematron"?>
Literatur