Peter Hurlemann: CDATA-Abschnitt vs. html-Codierung

Tag zusammen,
ich habe folgende Frage:
um in einem XML-Dokument einen Abschnitt zu erzeugen, der vom Parser als reiner Text behandelt wird, also vom Parser nicht interpretiert wird, gibt es die Möglichkeit, den Textabschnitt in einen CDATA-Bereich "zu verpacken". Wir haben einen Datenkonverter, der Daten aus einem XML ausliest und interpretiert. In manchen XML Dokumenten befindet sich innerhalb eines Tags, das weitere Elemente definiert das Ganze nun HTML- codiert. Also anstatt <![CDATA[<?xml version="1.0"  u.s.w.
steht da
&lt;?xml version="1.0"  u.s.w.

Sofern ich das richtig verstanden habe, ist die Verwendung von CDATA gerade gedacht, um die Codierung wie in HTML zu vermeiden. Die Frage ist jetzt, ob die Verwendung dieser Codierung prinzipiell erlaubt ist. Alle in Java zu Verfügung stehenden Parser sind nämlich nicht in der Lage, die HTML-mäßige Codierung zu erkennen.
Im Internetexplorer beispielsweise wird der Textinhalt richtig angezeigt, aber der ist ja auch in erster Linie gedacht, um HTML anzuzeigen.

Kann mir jemand weiterhelfen?

Beste Grüße,

Peter

  1. Hallo,

    Sofern ich das richtig verstanden habe, ist die Verwendung von CDATA gerade gedacht, um die Codierung wie in HTML zu vermeiden. Die Frage ist jetzt, ob die Verwendung dieser Codierung prinzipiell erlaubt ist.

    Was ist erlaubt? <, >, " und ' mit &lt;, &gt;, &quot; und &apos; zu maskieren? Ja, klar, das ist eine XML-Grundlage.
    Das Arbeiten mit CDATA ist natürlich auch erlaubt.
    Ehrlich gesagt verstehe ich deine Frage nicht. Kannst du das nochmal erläutern?

    Alle in Java zu Verfügung stehenden Parser sind nämlich nicht in der Lage, die HTML-mäßige Codierung zu erkennen.

    Was sollten sie denn da »erkennen«? &lgt; und &gt; sind feste Entities in XML. Deshalb sollten sie &lt;bla&gt; auch nach <bla> auflösen können (es ist dann ein Textknoten). Ich kann mir nicht vorstellen, dass die Parser das falsch machen.

    Grüße,
    Mathias

  2. Hallo Peter,

    Sofern ich das richtig verstanden habe, ist die Verwendung von CDATA gerade gedacht, um die Codierung wie in HTML zu vermeiden. Die Frage ist jetzt, ob die Verwendung dieser Codierung prinzipiell erlaubt ist.

    in einem CDATA-Abschnitt dürfen beliebige Zeichendaten (character data) stehen mit Ausnahme der schließenden Zeichenfolge ]]> selbst. Diese müsste als ]]&gt; geschrieben werden.

    Grüße,
    Thomas