Holladiewaldfee,
Der persönliche Ehrgeiz fällt dabei sehr schnell auf die Nase,
wenn man sich mit all den MIME-Kopfschmerzen beschäftigen muß,
schließlich soll XHTML 1.1 mit dem richtigen MIME-Typ
ausgeliefert werden, der in Browsern für praktische Probleme
sorgen kann. Weswegen ich die Beschäftigung mit
XHTML 1.1 dann gelassen habe.
also ich liefere die Seiten im Moment mit application/xhtml+xml aus.
Zur Zeit lasse ich einfach PHP diesen Header schicken.
Da die Seiten valide sind, hat es auch keine größeren Probleme damit
gegeben. Was mir aufgefallen ist, ist daß eine Hintergrundfarbe für
<body> keinen Effekt mehr auf die Seite hat, was aber nach dem
Verständnis von XML dadurch zu lösen war, daß ich die
Hintergrundfarbe auch dem <html>-Element zugeordnet habe.
Natürlich ist mir bewußt, daß ich mit obigem Mime-Typ wahrscheinlich
Probleme mit älteren Browsern bekommen werde. Deswegen werde ich das
PHP-Script, das im Moment den Header ausliefert, noch etwas
erweitern, irgendwas in der Art
---
if (strstr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml"))
header("Content-type: application/xhtml+xml");
else
header("Content-type: text/html");
---
Soweit ich das Verstanden habe heißt es ja nur man "soll" XHTML 1.1
nicht als text/html ausliefern - verboten ist es aber nicht (erst
mit XHTML 2.0).
Natürlich muß das Script noch verfeinert werden, weil z.B. der IE 6
(zumindest bei mir) kein application/xhtml+xml im HTTP_ACCEPT
mitliefert. Also müsste man halt den IE 6 noch extra rausfiltern -
wobei man diesen Header beim IE aber sowieso in die Tonne treten
kann, da steht schließlich nicht mal text/html drin ... und das
poplige */*, das er mitliefert ... naja.
Was die <style>-Elemente im <head> betrifft so habe ich diese im
Moment in der Form
---
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
...
/*]]>*/-->
</style>
---
geschrieben. Damit wäre der Teil für ältere Prowser auskommentiert,
was ich aber prinzipiell für unnötig halte, denn wer einen so alten
oder dämlichen Browser hat, hat's eigentlich nicht viel anders
verdient. Ein einfaches <!-- ... --> ist ja in XHTML für #PCDATA-
Teile (was <style> glaube ich ja ist) ein echter Kommentar und alles dazwischen
wird ignoriert. Ich weiß das schaut ätzend aus und ich hab mir das
auch nicht ganz selber ausgedacht ;) Allerdings müßte es auf diese
Weise möglich sein, daß das Dokument sowohl als XHTML 1.1 als auch
als HTML 4 behandelt werden kann. Soweit mein Verständnis von diesem
XML-Zeug reicht, ist die Konstruktion zwar etwas verwegen aber
durchaus gültig und richtig:
Ich beginne einen XHTML-Kommentar und öffne in diesem einen CSS-
Kommentar. Dann schließe ich den XHTML-Kommentar wieder und weise
das nächste Element als #CDATA und nicht mehr #PCDATA aus. Damit
behandelt der XHTML-Parser den nachfolgenden Kommentar nicht mehr
als "echten" Kommentar im Sinne von XHTML und ignoriert das Folgende
nicht mehr. Nun schließe ich den CSS-Kommentar. Damit ist der vorige
Teil für den CSS-Parser uninteressant und kann nicht zu Fehlern
führen. Dann kommt das normale CSS-Geblubber und am Ende schließe
ich halt in gleicher Weise den #CDATA-Teil wieder ab.
Für JS gibt es eine ähnliche Konstruktion, da ich das aber in diesen
Seiten nicht benutze ist es für mich eher uninteressant (vgl.
http://www.hixie.ch/advocacy/xhtml).
Ciao,
Harry