D.R.: "]]>" in CDATA-Abschnitten

Beitrag lesen

Hallo,

Verwechsel bitte XHTML im Browser nicht mit XML.

Wo liegt denn da der Unterschied? Beide können einen Syntax-Error liefern.

Das schon. Nur dass die Browser bei XHTML sich doch anders verhalten als bei XML.

Du meinst, weil aktuelle Firefoxes XML-Dateien erst komplett laden müssen, bevor sie sie anzeigen? Sonst kann ich jedenfalls keine nennenswerten Unterschiede erkennen. Selbst der Mime-Type kann der Selbe sein.

wenn du die Dateien entsprechen vom Server auslieferst

Klar. XHTML muss man schon mit einem XML-Mime-Type ausliefern, was ich ja auch gemacht habe.

Darber hinausst ist das nicht nur ungültiges XHTML

Warum?

Hast du die Seite validiert?  Die Fehlermeldung ist eindeutig.
<http://validator.de.selfhtml.org/validate/?uri=http://danielrichter.drition.net/ST/Site-Tes
ter.php?Site=XML_und_CDATA>

OK, ich habe den Fehler jetzt behoben. Es lag schlichtweg daran, dass der <body> in XHTML-Strict nur Blockelemente enthalten darf.

[…] auch noch inkorrektes XML.

Nö, das würde er mit einem Parse-Error quittieren.

Würde er nicht. *

Doch! Sonst hat er den Namen „XML-Fehler“ nicht verdient.

»CDATA sections begin with the string "<![CDATA[" and end with the string "]]>"«

Ja - und das habe ich auch beachtet.

Wie gesagt: wenn das Leerzeichen zwischen ]] und > beabsichtigt war: OK.

Das habe ich ja auch so angedeutet.

Ansonsten *): das erste ]]> beedent das CDATA, das was danach kommt ist für den Parser nur "Text" und in diesem ist > durchaus ohne Maskierung erlaubt. **
Wobei gute Parser das zweite ]]> durchaus anmekern!


<?xml version="1.0" encoding="UTF-8"?>
<root>
<knotenmitchilds>
  <child1>new1</child1>
</knotenmitchilds>
<![CDATA[

<knotenmitchilds>
  <child1>new1</child1>
  <child2>new2</child2>
  <child3>new3</child3>
  <child4>new4</child4>
</knotenmitchilds>

text text text
]]>
<knotenmitchilds>
  <child1>new1</child1>
  <child2>new2</child2>
</knotenmitchilds>
text text text
]]>
</root>

Meldung:
SystemID: D:\test\Unbenannt1.xml
Position: 22:2
Beschreibung: The character sequence "]]>" must not appear in content unless used to mark the end of a CDATA section.

Die Seite verursacht auch einen Parse-Error in meinem Firefox.

Wogegen ein:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<knotenmitchilds>
  <child1>new1</child1>
</knotenmitchilds>
<![CDATA[

<knotenmitchilds>
  <child1>new1</child1>
  <child2>new2</child2>
  <child3>new3</child3>
  <child4>new4</child4>
</knotenmitchilds>

text text text
]]&gt;
<knotenmitchilds>
  <child1>new1</child1>
  <child2>new2</child2>
</knotenmitchilds>
text text text
]]>
</root>

Korrekt und wohlgeformt ist.

Dafür sieht man bei der Clientseitigen Verarbeitung aber auch die Zeichenfolge „]]&gt;“ in der Ausgabe, was nicht gewünscht ist.

mfg. Daniel