• +49-(0)721-402485-12
Ihre Experten für XML, XQuery und XML-Datenbanken

Serialisierung

Eine XQuery-Anfrage liefert immer eine Sequenz und somit eine Instanz des XML-Datenmodells. Es liegt bei der XQuery-Implementierung, wie diese Instanz des XML-Datenmodells weitergegeben wird. In vielen Fällen wird eine Serialisierung vorgenommen werden, d. h., die Instanz des XML-Datenmodells wird in eine Zeichenkette (z. B. ein XML-Dokument) überführt.

Eine eigene Spezifikation aus der XQuery-Familie beschreibt, wie durch Serialisierung aus einer Instanz des XQuery-Datenmodells ein XML-Dokument oder ein XML Entity entsteht.

Dazu wird die zu serialisierende Sequenz zunächst transformiert (normalisiert), und zwar in folgenden Schritten:

  • Aus einer leeren Sequenz wird eine leere Zeichenkette.
  • Alle atomaren Werte der Sequenz werden durch Typumwandlung mittels xs:string() in Zeichenketten transformiert.
  • Aufeinander folgende Zeichenketten werden miteinander verschmolzen, getrennt durch ein Leerzeichen.
  • Jede Zeichenkette wird durch einen Textknoten ersetzt. Jetzt besteht die Sequenz nur noch aus Knoten.
  • Jeder Dokumentknoten wird durch seine Kinder ersetzt.
  • Ein neuer Dokumentknoten wird erzeugt und alle Einträge der Sequenz werden zu seinen Kindern.

Wenn der entstehende Dokumentknoten genau einen Elementknoten als Kind hat und außerdem nur Kommentarknoten oder Knoten für Verarbeitungsanweisungen, dann wird daraus ein wohlgeformtes XML-Dokument. Anderenfalls wird ein Dokumentfragment erzeugt, das ein wohlgeformtes XML-Dokument ergibt, wenn es in folgendes XML-Dokument "eingepackt" wird (d. h. seine URI als entity-URI eingesetzt wird):

<!DOCTYPE doc [
<!ENTITY e SYSTEM "entity-URI">
]>
<doc>&e;</doc>

Die Serialisierungsspezifikation nennt außerdem einige Parameter, die das Ergebnis der Serialisierung beeinflussen können, wie etwa:

  • das Encoding des Ergebnisses
  • den Media-Type des Ergebnisses

So kann beispielsweise ein entstehendes XML-Dokument als SVG-Grafik gekennzeichnet werden.

Es ist allerdings nicht zwingend, dass das Ergebnis einer XQuery-Auswertung zu XML wird. Zum einen ist dies nicht immer möglich, z. B. dann, wenn das Ergebnis der XQuery-Auswertung eine Sequenz von Attributknoten ist. Zum anderen wäre es aber auch eine Einschränkung der Möglichkeiten von XQuery. So kann mit einer XQuery-Anfrage ja auch ein HTML-Dokument oder ein anderes Ausgabeformat erzeugt werden. Die Spezifikation der Serialisierung lässt daher neben der Serialisierungsmethode xml, die oben skizziert wurde, weitere Serialisierungsmethoden zu.

 

Quelle: "XQuery – Grundlagen und fortgeschrittene Methoden", dpunkt-Verlag, Heidelberg (2004)

<< zurückvor >>