Konzepte Content-Repräsentation & Markup-Sprachen

9.4 XML Inclusions (XInclude)

Um Dokumente modular erstellen zu können, wird ein Mechanismus benötigt, der das Einbinden von Dokument-Modulen erlaubt. Die grundlegenden Mechanismen wie External Entities sowie der SUBDOC-Mechanismus (der nur für SGML, aber nicht für XML definiert ist) wurden bereits in Abschnitt 9.2 erläutert. Hierbei traten auch einige Probleme zu Tage, die diese Mechanismen nicht für alle Anwendungen geeignet erscheinen lassen.

XInclude ist ein allgemeiner Mechanismus zum Einbinden von Dokumentteilen. Das Einbinden von Dokumentteilen geschieht dabei auf Infoset-Ebene (siehe Lerneinheit 8). Das bedeutet, daß XInclude parsierte Dokumenteile einbindet — das Einbinden findet also nicht beim Parsieren des Dokuments statt, wie dies bei External Entities der Fall ist. Um ein Infoset zu erzeugen, wird nur ein nicht-validierender Parser benötigt — die Dokumente müssen keine DTD und kein Internal Subset enthalten: XInclude läßt sich also mit allen (wohl-geformten) XML-Dokumenten verwenden.

In einem Dokument, das andere Dokumentteile mit XInclude einbinden möchte, wird der Elementtyp include verwendet. Dieser stammt aus dem Namensraum mit dem Namen http://www.w3.org/2001/XInclude, so daß Namenskollisionen mit anderen Elementtypen ausgeschlossen sind. Folgende Attribute sind für den Elementtyp include definiert:

href

Das erforderliche Attribut href enthält einen URI (siehe Lerneinheit 10), der auf den einzubindenden Dokumentteil zeigt.

parse

Mit dem optionalen Attribut parse kann angegeben werden, ob der einzubindende Dokumentteil als parsiertes XML-Dokument (parse="xml") oder als Text-Ressource (parse="text") eingebunden werden soll. Fehlt dieses Attribut, wird xml angenommen.

Dadurch wird die Möglichkeit geschaffen, in XML-Dokumenten XML-Fragmente direkt als Text einzubinden, z.B. in Dokumenten über XML, in denen Beispiele verwendet werden, die natürlich nicht als XML-Dokument parsiert werden sollen.

encoding

Beim Einbinden von Textdokumenten kann es vorkommen, daß die verwendete Textkodierung nicht korrekt erkannt werden kann, da ja nicht alle Textdokumente dies in der ersten Zeile vermerken, so wie es für XML definiert ist. Im Attribut encoding kann daher die für einen einzubindenden Dokumentteil gültige Textkodierung angegeben werden.

Beispiel 15 zeigt die Verwendung des XInclude-Mechanismus.

Beispiel 15. Verwendung von XInclude

<r:rechnung xmlns:xi="http://www.w3.org/2001/XInclude"
            xmlns:r="http://www.example.com/rechnung">
 <xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <r:posten anzahl="1000" bestell-nummer="0815">
   <r:bezeichnung>
    <xi:include href="0815.xml" parse="xml"/>
   </r:bezeichnung>
  </r:posten>
 </xhtml:p>
</r:rechnung>
      
    

Das Vorgehen bei der Verarbeitung eines include-Elements in einem Dokument ist dabei wie folgt: Das Infoset des einbindenden Dokuments (Quell-Infoset) und das Infoset des im href-Attribut angegebenen Dokuments werden zu einem Ergebnis-Infoset zusammengefügt. Das include-Element wird dabei sozusagen durch das eingebundene Infoset ersetzt.

Es handelt sich hier also um einen sehr einfachen Mechanismus, der allerdings in der Lage ist, viele Probleme bei der Verwendung und Erstellung von modularen XML-Dokumenten zu lösen.

Der XInclude-Mechanismus ist zur Zeit (Februar 2002) noch keine W3C-Empfehlung sondern besitzt den Status Candidate Recommendation. Die Spezifikation ist unter http://www.w3.org/TR/xinclude/ einzusehen.

Kommentare (0)

Ihr Kommentar

Name