Welche Möglichkeiten gibt es, ein XML Dokument mit einem Schema zu verknüpfen?
David Maus, 15. Jan 2017
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:
-
der Ablageort der Schemadatei ändert sich
-
der Name der Schemadatei ändert sich
-
eine andere Schematechnologie muss verwendet werden
-
eine andere Schematechnologie soll ergänzend verwendet werden
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 Schema
dateien, als auch die gleichzeitige Verwendung verschiedener
Schema
technologien 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 Declaration |
---|---|
Mehrere Schemadateien | Nein |
Beispiel | |
Literatur |
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
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 |