Wenn mehrere Personen an einem Dokument arbeiten, sollte man es modularisieren
Insbesondere für umfangreiche, von Menschen geschriebene Dokumente, wie es DocBook-Dokumente sind, bietet es sich an, die Inhalte auf mehrere Dateien aufzuspalten, um dann mit den einzelnen Dateien zu arbeiten. In den kleineren Teildokumenten findet man sich besser zurecht und es ist möglich, dass mehrere Personen an einem Dokument arbeiten.
Um XML-Dokumente zu Modularisieren gibt es im wesentlichen zwei Möglichkeiten. Zum ersten die bereits angesprochenen externen Entitäten und zum zweiten eine neuere Technologie namens XInclude.
Vorgehensweise.
Die einzelnen Module des Dokuments werden als XML-Dateien ohne XML-Deklaration und Dokumententyp-Deklaration erstellt und bearbeitet. In der Hauptdatei werden die einzelnen Teile als externe Entities deklariert und eingebunden. Der XML-Parser behandelt die Hauptdatei wie ein Dokument.
Vorteile von externen Entities
Das Vorgehen ist SGML-kompatibel und wird von jedem XML-Parser unterstützt
Nachteile von externen Entities
die Teildokumente können nicht validiert werden
es ist keine mehrfache Schachtelung von Modulen möglich
Beispiel 1.15. Ein modularisiertes XML-Dokument
Beim folgenden Dokument handelt es sich um ein Buch mit mehreren Kapiteln. Die Kapitel sind in die Dateien kapitel1.xml, kapitel2.xml, kapitel3.xml, nachwort.xml ausgelagert. Die Hauptdatei sieht folgendermaßen aus:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE buch SYSTEM "buch.dtd" [
<!ENTITY einleitung SYSTEM "kapitel1.xml">
<!ENTITY zweiterakt SYSTEM "kapitel2.xml">
<!ENTITY dritterakt SYSTEM "kapitel3.xml">
<!ENTITY nachwort SYSTEM "nachwort.xml">
]>
<buch>
&einleitung;
&zweiterakt;
&dritterakt;
&nachwort;
</buch>
Die Standardisierung von XInlude ist noch nicht abgeschlossen
XInclude ist ein XML-Standard, mit dem man XML-Dokumente oder Teile von XML-Dokumenten in andere Dokumente einbinden kann. In diesem Abschnitt wird nur erklärt, wie man komplette Dokumente einbindet, da man für das Einbinden von Dokumentteilen die Technologien XPath und XPointer erläutern müsste, und da das Einbinden von Dokumentteilen für die Modularisierung von DocBook-Texten nicht unbedingt erforderlich ist.
Vorgehensweise.
XInclude nutzt den Namespace http://www.w3.org/2001/XInclude. Um XInclude in einem Dokument zu nutzen, muss man diesen Namespace entweder für jedes XInclude-Element oder als Namespace-Prefix registrieren.
Beispiel 1.16. Registrierung des XInclude-Namespaces
<?xml version="1.0" encoding="UTF-8"?>
<buch
xmlns:xinclude="http://www.w3.org/2001/XInclude">
</buch>
Danach kann man externe Dateien über das Element include einbinden. Als einziger Parameter ist href interessant, er gibt die URL oder den relativen Pfad der einzufügenden Datei an.
Beispiel 1.17. Einbindung externer Dateien
Damit kann man das Beispiel Ein modularisiertes XML-Dokument wie folgt anpassen:
<?xml version="1.0" encoding="UTF-8"?>
<buch
xmlns:xinclude="http://www.w3.org/2001/XInclude">
<xinclude:include href="kapitel1.xml" />
<xinclude:include href="kapitel2.xml" />
<xinclude:include href="kapitel3.xml" />
<xinclude:include href="nachwort.xml" />
</buch>
Vorteile von XInclude
XML-basierte Anwendung, leichter zugänglich
Dokumente können beliebig tief geschachtelt werden
Teildokumente können einzeln validiert werden
Nachteile von XInclude
Vorgang der Standardisierung ist noch nicht abgeschlossen
Nicht alle Tools unterstützen XInclude
Weitere Informationen zur Verarbeitung von XInclude gibt es später im Abschnitt: Verarbeitung von XInclude.