Kai Lahmann: XHTML, CSS und das IE 6.0 Wunder

Beitrag lesen

ich wollte Euch mal die Frage stellen: Soll man eine Seite im Kopf als XHTML 1.0 kennzeichnen und die Datei dann mit .html statt .xhtml versehen. Hintergrund: Meine Seiten, die ich zur Zeit programmiere, verwenden nun bis auf dieses target="_top" eigentlich strictes HTML 4.01, bzw. XHTML Ergänzungen. Wenn ich diese Seiten z.B. mit Opera ansehe ist alles in Ordnung, der IE dagegen verschiebt einige Elemente nach Oben (statt zentriert, wie im CSS angegeben). Wenn ich jetzt die Dateien als XHTML kennzeichne und als .xhtml speichere kommt Opera auf einmal nicht mehr mit der horizontalen Ausrichtung zurecht, der IE zeigt mir nur seinen XML Baum. Klasse. :-) Lasse ich den Kopf aber auf XHTML, die Endung jedoch auf .html, dann, oh Wunder, zeigt auch der IE 6.0 die vertikalen Ausrichtungen richtig an und auch Opera hat keine Probleme mehr. Also, was tun? Ist es überhaupt erlaubt eine XHTML Datei auf .html enden zu lassen?

also mal was zu Browsern, Servern, Endungen und Mime-Types..:)

Wenn die Datei lokal liegt, interessieren sich die meisten Browser vornehmlich für die Endung. Dabei wird ein .html eben durch den HTML und ein .xhtml durch den XML-Parser gejagt. Beim XML sollte der Browser wenn oben im <!DOCTYPE> kein Link auf eine DTD steht entweder einen Error ausgeben oder nur die Dokumentstruktur auflisten. Wenn dort etwas steht, ist diese zu nutzen.
Wenn die Seite auf einem Webserver steht, ist die Endung in der Regel völlig egal. Nur der IE meint hin und wieder sich über die Serveraussagen hinwegsetzen zu müssen. Alle anderen erhalten vom Server einen Mimetype, an den sie sich auch halten, also wenn da text/html kommt, isses HTML und bei text/xml ist es XML. In der Regel gelten da die gleichen Regeln, wie lokal.

So, nun zu deinem Problem:
Wenn das ganze durch einen XML-Parser wandern soll, darf da kein "bis auf" "außer" und "abgesehen von" sein. Entweder das Dokument ist 100% gültiges XML (bzw. XHTML) oder der Parser kriegt's Kotzen (= verweigert die Anzeige)
Unter diesen Umständen, ist es derzeit wohl das praktikabelste, die Datei als .html (was von Server als text/html gekennzeichnet wird) und im Kopf als XHTML mit Version und DTD zu kennzeichnen. Das hat dann auch gleich den Vorteil, das Browser die von XML keinen Schimmer haben nicht total aussteigen. Ich bin mir übrigens nicht sicher, ob Opera 6 XML kann... IE5/6 und Mozilla können, das weiß ich..