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

Hallo,

ich bin ganz neu in dieser "Branche" und möchte meine Webseite nach den Regeln von XHTML erstellen.

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. Dadurch ist es mir zB nicht möglich XHTML Dokumente lokal mit dem IE zu testen. 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

ich habe in den Dokumenten mal das Beispiel zur CSS-Eigenschaft "background-color" von SELFhtml verwendet. Jedoch habe ich den Inhalt des html-Tag in ein XHTML-"Gerüst" gepackt.
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. Dieser zeigt dann jedoch paradoxer weise an, dass das dokument den type application/xhtml+xml hat. verwende ich jedoch im dokument die typen text/xml oder application/xhtml, so kommt der Mozilla damit nicht klar und das Dokument weisst laut browser den typ text/plain auf und wird auch so dargestellt.
Übrigens: Der IE5.5 SP2 kommt mit keiner .xhtml datei klar.
Ich mache den webserver für dieses merkwürdige verhalten verantwortlich. ist der einfach beschissen konfiguriert oder woher kommt dieses Verhalten?

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.
hier ein screenshot:
http://home.arcor.de/josef.klein724499/xhtml/test-xhtml.gif

das .html Dokument wird vom SGML-Parser korrekt verarbeitet und zeigt den hintergrund auf der ganzen fläche an.
wie kann ich dieses unschöne verhalten vermeiden. kann ja nicht so schwierig sein, eine hintergrundfarbe zu definierenoder?

Ich danke schon mal allen, die sich die Zeit genommen haben bis hierhin zu lesen oder mir sogar eine Antwort geschrieben haben!

Danke und Tschüss!!!
jmk

  1. 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

    1. Hi,

      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.

      Könnte das schlicht und einfach an den Erscheinungsdaten (CSS2: 05/1998, XHTML1 01/2000) liegen.

      Desweiteren: Auch bei X-HTML-Dokumenten heißt das root-Element immer noch html (und nicht xhtml).
      Inwiefern also "HTML-Dokument" an dieser Stelle "HTML4.01 or lower"-Dokument heißen muß oder ob hier auch XHTML noch als  "HTML-Dokument" gilt, ist zumindest fraglich.

      cu,
      Andreas

      --
      MudGuard? Siehe http://www.Mud-Guard.de/
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    2. Hallo,

      leider habe ich es nicht gebacken bekommen mich früher zu melden. Ich bin auf jeden Fall begeistert von euren Antworten. So viel gutes Zeug hätte ich mir garnicht erwartet.

      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.

      Macht diese meta-Angabe dann überhaupt noch Sinn?

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

      Juchu, ich mag es, wenn eine Lösung so genial einfach ist.

      --
      Danke!

      jmk

  2. Das liegt daran, dass ich zwar den MIME-Type im Dokument angegeben habe, diese Information beim Browser jedoch nicht immer beim Browser ankommt.

    Wie molily schon geschrieben hat, "weiß" der Server nicht, was xhtml sein soll und sendet deshalb text/plain als mime-type.

    Wenn du deinen Server dazu bringen willst, dass er xhtml als solches ausliefert musst du ihn dazu anweisen, indem du folgende Zeile in deine .htaccess einfügst (bzw. eine .htaccess mit folgendem Inhalt erstellst):

    AddType application/xhtml+xml .xhtml

    Für die Praxis ist es allerdings nicht zu empfehlen, da der Internet Explorer damit nichts anfangen kann.
    Also gibt es drei Möglichkeiten:

    1. Alle IE-Nutzer aussperren -> schlecht
    2. AddType text/html .xhtml -> xhtml wird als html ausgeliefert und von den Browsern auch so behandelt
    3. Alle Dateien in *.html umbenennen -> gleicher Effekt, aber aufwändiger

    Ich denke die zweite Variante ist momentan die beste, dann wird zwar der SMGL-Parser verwendet aber dafür kann jeder die Seiten öffnen.
    Ich hoffe Arcor erlaubt die .htaccess-Methode sonst musst du alle Dateien umbenennen.

    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.

    Die Meta-Angaben werden meines Wissens von XML-Parsern ignoriert, deshalb kann man dort auch gleich text/html angeben.
    (Hab ich vor einigen Wochen hier im Forum gelesen)
    Bei mir verwendet Firefox den XML-Parser auch, wenn die Meta-Angabe text/html lautet. Funktioniert sowohl lokal als auch auf dem Server.
    (Dateiendung .xhtml & application/xhtml+xml als mime-type auf dem Server)

    Hoffentlich war etwas hilfreiches dabei.
    Noch viel Erfolg

    Johannes

    1. Hallo,

      auch dir ein großes "Dankeschön!"

      1. AddType text/html .xhtml -> xhtml wird als html ausgeliefert und von den Browsern auch so behandelt

      Ich denke, dass ich, wie von dir vorgeschlagen, diese Variante verwenden werde.

      Ich hoffe Arcor erlaubt die .htaccess-Methode sonst musst du alle Dateien umbenennen.

      Das geht tatsächlich. Jedoch funktioniert der Upload der .htaccess manchmal nicht richtig. Weiss der Geier wovon das kommt. Vielleicht gibt es da doch eine kleine Beschränkung.
      Aber das ist eigentlich auch ganz egal, da dass Projekt, wenn es einmal fertig werden sollte, sowieso an einem anderen Ort gehostet wird.

      Hoffentlich war etwas hilfreiches dabei.

      Ganz viel!

      Noch viel Erfolg

      Mit so einer Hilfe kann es nur erfolgreich enden.

      --
      Tschüss, jmk