Tim Tepaße: CDATA in XHTML

Beitrag lesen

Hallo,

Nichts desto trotz darf in XHTML in den Elementen P und PRE natürlich kein CDATA stehen.

Zitat aus der XML Spezifikation:

„CDATA sections MAY occur anywhere character data may occur; ...“

<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">

CDATA-Sektionen sind hier schon in dem Stichwort #PCDATA enthalten. Wenn Du meinst, es gäbe ein analoges Stichwort #CDATA, muss ich Dich enttäuschen (Achtung: nicht mit dem Attributwert CDATA verwechseln.) Auch in XHTML 1 sind CDATA-Sektionen überall dort erlaubt, wo #PCDATA erlaubt ist.

Nur: Die Browser scheinen sich uneinig zu sein, ob sie CDATA-Inhalt wie von der DOM Spezifikation gefordert als Textknoten in den DOM-Baum einbasteln (und folglich auch darstellen) sollen. Meine Schnelltests mit einer XML/XHTML-Datei und Ian Hicksons Live DOM Viewer ergaben dieses Resultat:

Safari 2.0  – Wird nicht dargestellt, nicht im DOM-Baum vorhanden
Firefox 1.5 – Wird dargestellt, im DOM-Baum vorhanden
Opera 8.5   – Wird dargestellt, im DOM-Baum vorhanden

Wie das im Internet Explorer ist, muss jemand überprüfen, der einen IE zur Hand hat.

Daniel: Ich vermute, Du hast ein einem Browser getestet, der CDATA-Sektionen nicht als Textknoten interpretiert. Ist ein eher schwaches Ergebnis. Ich würde Dir daher empfehlen, CDATA-Sektionen in XHTML nicht einzusetzen, sondern „traditionelle“ Maskierung mittels &lt; vorzunehmen, wenn Du Markup darstellen willst.

Tim