Hallo,
Wie wird die Zeichenfolge "]]>" (ohne Anführungszeichen) in CDATA-Bereichen maskiert ?
Du kannst es mit: "]]gt;" machen
Dann wird das „gt;“ aber auch so im Browser angezeigt/verarbeitet.
Korrekt, mein Fehler. Es sollte natürlich "]]>" sein.
Und das wird genau so ausgegeben!
Ja, und genau deshalb sagte ich: "später kommt dann darauf an, wie du den Inhalt vom CDATA weiterverarbeitest"
Und ich sagte ja bereits, dass man XML so weiterverarbeiten sollte, wie es das W3C empfiehlt.
Das W3C empfiehlt da ziemlich nichts.
Du kannst im XSLT z.B: disable-output-escaping verwenden.
Das ist korrekt. Wo siehst du dabei ein Problem mit dem gesagten?
Du möchtest ein > ausgeben aber schreibst die Zeichenfolge > in den Code.
Ja, in _diesem_ Fall schon.
Ja, das habe ich ausprobiert.
Kopiert oder abgeschrieben? Letzteres sollte funktionieren - jedenfalls wenn du UTF-8 o.Ä. als Zeichenkodierung nutzt.
Hier der Beweis: XML_und_CDATA.
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. (wenn du die Dateien entsprechen vom Server auslieferst)
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>
http://validator.w3.org/check?uri=http%3A%2F%2Fdanielrichter.drition.net%2FST%2FSite-Tester.php%3FSite%3DXML_und_CDATA
[…] auch noch inkorrektes XML.
Nö, das würde er mit einem Parse-Error quittieren.
Würde er nicht. *
»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.
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.
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
]]>
<knotenmitchilds>
<child1>new1</child1>
<child2>new2</child2>
</knotenmitchilds>
text text text
]]>
</root>
--------------------------------
Korrekt und wohlgeformt ist.
Grüße
Thomas