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 < vorzunehmen, wenn Du Markup darstellen willst.
Tim