Modularisierung von XML-Dokumenten

XInclude und Externe Entitäten

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.

Modularisierung mit externen Entitäten

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>

Modularisierung über XInclude

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.