molily: (XHTML) MIME-Typen und die Umsetzung durch XML Parser

Beitrag lesen

Hallo,

Leider habe ich masive Schwierigkeiten, dafür zu sorgen, dass ein Browser auch tatsächlich seinen XML-Parser verwendet um die Site darzustellen. Das liegt daran, dass ich zwar den MIME-Type im Dokument angegeben habe, diese Information beim Browser jedoch nicht immer beim Browser ankommt.

Dafür ist auch vor allem ausschlaggebend, welchen MIME-Typ der Webserver sendet. Was du letztlich im Dokument in einem meta-Element angibst, sollte keine Auswirkungen haben.

Dadurch ist es mir zB nicht möglich XHTML Dokumente lokal mit dem IE zu testen.

Der MSIE kann XHTML als XHTML (application/xhtml+xml) prinzipiell nicht verarbeiten. Selbst wenn es möglich wäre, dass der richtige MIME-Typ beim MSIE »ankommt« auch bei lokaler Betrachtung (und das wird über die Dateiendung gelöst), wird es nicht möglich sein, das Dokument zu betrachten. Ein Umweg über application/xml oder text/xml würde höchstens dazu führen, dass MSIE den Parsebaum anzeigt.

Der Firefox0.8.0 schafft das jedoch zum Glück.
Des weiteren hier mal zwei Beispiele für das merkwürdige Verhalten eines Webservers:

http://home.arcor.de/josef.klein724499/xhtml/test.xhtml

http://home.arcor.de/josef.klein724499/xhtml/test.html

Das ist logisch, in der Webserver-Konfiguration ist die Dateiendung .xhtml nicht mit dem von dir gewünschten MIME-Typ verknüpft. Daher sendet der Server das Dokument als text/plain.

Speichere ich diese Informationen als .html so liefert der Webserver, egal welchen MIME-Type ich per meta-Tag angebe, das Dokument immer mit dem Typ text/html. Es wird also vom SGML-Parser verarbeitet, was ja nicht sein soll.
Speichere ich das ganze jetzt als .xhtml, dann muss ich auf jeden Fall per meta-Tag den MIME-Type "application/xml" angeben, damit das Dokument wenigstens vom Firefox0.8.0 mit dem XML-Parser verarbeitet wird.

Das wäre mir neu. Firefox sollte text/plain auch immer als text/plain anzeigen und nicht nach einem meta-Tag darin urteilen. Das macht er in meinen Tests auch, entgegen deinem Screenshot.

Dieser zeigt dann jedoch paradoxer weise an, dass das dokument den type application/xhtml+xml hat.

Wenn das Dokument über HTTP bezogen wird und der Server text/plain sendet? Das glaube ich nicht. Es wäre allerdings logisch, denn application/xml als in Erfahrung gebrachter MIME-Typ zusammen mit der XHTML-Namespace-Angabe im Root-Element (<html xmlns="http://www.w3.org/1999/xhtml">) sollten Firefox sagen, dass es ein XHTML-Dokument ist, und der korrekte MIME-Typ für XHTML-Dokumente ist application/xhtml+xml.

Übrigens: Der IE5.5 SP2 kommt mit keiner .xhtml datei klar.

Wieso willst du ihm dann XHTML als XHTML vorsetzen? Aus diesem Grund setzt man zumindest solchen Browsern nur HTML-kompatibles XHTML als text/html vor.

Ich mache den webserver für dieses merkwürdige verhalten verantwortlich. ist der einfach beschissen konfiguriert oder woher kommt dieses Verhalten?

Er deklariert, wie du festgestellt hast, das Dokument als text/plain. Ja, das an sich ist ein Fehler des Servers.

so, jetzt noch ein zweites, jedoch viel leichter zu beschreibendes problem:
wenn ich es mal schaffe, den Firefox0.8.0 das .xhtml Dokument anzeigen zu lassen, dann dehnt der XML-Parser den Hintergrund nicht über den gesamten  Bereich aus.

Das liegt daran, dass die entsprechende Regel, die das Übertragen der Hintergrundfarbe von body auf html vorsieht (http://www.w3.org/TR/REC-CSS2/colors.html#q2), nur für HTML-Dokumente gilt, nicht für XHTML-Dokumente. Das ist zugegebenermaßen eine unsinnig strenges Verständnis, da im CSS-Standard im Übrigen nur von HTML-Dokumenten die Rede ist und Regeln in diesem Zusammenhang im Gecko auch in XHTML-Dokumenten gelten.

wie kann ich dieses unschöne verhalten vermeiden.

Dem Element html die Hintergrundfarbe vergeben.
html {background-color:#e0e0e0;}

Mathias