20.7 | Einbettung von Binärdaten in XML-Dokumenten |
Von Haus aus verfügt XML über keine spezielle Möglichkeit, Binärdaten einzubinden. Man kann aber unter Verwendung der Sprachkonstrukte von XML Binärdaten »einbauen« und dann in der XML-Applikation in das Endprodukt integrieren.
Die gebräuchlichste Methode besteht darin, im Dokument nicht die Binärdaten selbst, sondern einen »Pointer« einzubauen, der bei der Verarbeitung von der XML-Applikation interpretiert wird. Solch ein Pointer könnte im einfachsten Fall der Name einer Datei (z. B. einer Bilddatei) sein. Denkbar wäre hier aber auch ein Schlüssel für eine Datenbank, unter dem die Binärdaten in einer Datenbank abgelegt sind.
Die XML-Applikation baut dann die Binärdaten entsprechend dem Zielformat in das Endprodukt ein, bei HTML beispielsweise durch ein <IMG SRC=...>-Tag. Der Nachteil dieser Methode ist, dass die Binärdaten nicht im Dokument selbst, sondern extern gespeichert sind.
Die Technik der Referenzierung eines Dateinamens im Dokument zur Einbindung von Binärdaten wird unter anderem auch bei HTML eingesetzt. HTML definiert das Element <IMG> zur Einbindung von Bildern in eine HTML-Seite, in dessen Attribut SRC der Name der Bilddatei angegeben wird:<IMG SRC="portrait.gif">Der Web-Browser, der hier der XML-Applikation entspricht, weil er das Dokument gewissermaßen »verarbeitet«, nämlich zur Darstellung am Bildschirm aufbereitet, »versteht« das <IMG>-Tag und lädt die angegebene Bilddatei. In genau dieser Weise können auch in selbst entwickelten DTDs und XML-Applikationen Binärdaten integriert werden:Beide Ansätze für die Erkennung von Elementen, die Binärdaten referenzieren, werden nachfolgend näher erläutert.
- Zunächst müssen in der DTD die Elemente und Attribute definiert werden, die die Binärdaten referenzieren.
- In der XML-Applikation muss dann beim Auftreten dieser Elemente die entsprechende Logik implementiert werden, die die Binärdaten in das Endprodukt einbindet. Zur Erkennung dieser speziellen Elemente gibt es zwei Möglichkeiten:
- Die Namen der Elemente werden »hart« in der XML-Applikation kodiert. Dies ist bei Web-Browsern der Fall, bei denen fest implementiert ist, was bei einem <IMG>-Tag zu tun ist.
- Alternativ kann man in der DTD mit speziellen Attributen bestimmte Elemente als Binärdaten-Elemente auszeichnen. In der XML-Applikation braucht man auf diese Weise nicht die Elementnamen hart zu kodieren, sondern es wird bei jedem Element geprüft, ob dieses Flag-Attribut gesetzt ist. Falls ja, kann aus einem zweiten Element der Pointer entnommen werden.