XHTML, CSS und das IE 6.0 Wunder
Lars Gusewski
- html
0 Kai Lahmann0 Helge0 Sven Rautenberg
Hallo,
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?
Gruss, Lars
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..
Moin!
Ich bin mir übrigens nicht sicher, ob Opera 6 XML kann... IE5/6 und Mozilla können, das weiß ich..
Er kann. Aber nur XML+CSS, keine Transformationen und sonstigen Schwachsinn (den man ohnehin besser auf dem Server erledigt). ;) Immerhin hat er bei den Tests von SelfXHTML-Dokumenten bei den Dateiendungen .HTML und .XML was lesbares angezeigt. .XHTML ist auf dem Selfserver nicht konfiguriert, da kommt der Mime-Typ text/plain. :)
- Sven Rautenberg
Er kann. Aber nur XML+CSS, keine Transformationen und sonstigen Schwachsinn (den man ohnehin besser auf dem Server erledigt). ;) Immerhin hat er bei den Tests von SelfXHTML-Dokumenten bei den Dateiendungen .HTML und .XML was lesbares angezeigt. .XHTML ist auf dem Selfserver nicht konfiguriert, da kommt der Mime-Typ text/plain. :)
ah, gut...
also mal was zu Browsern, Servern, Endungen und Mime-Types..:)
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)
Es geht dabei doch nur um die Definition im Kopf. Was ich meinte war angelehnt an den anderen Thread von mir bezüglich target in <a> bei der strict Definition. target gibt es da ja nicht, bei frameset schon, aber wie der Name und die Doku schon sagt, das kommt bei framesets zum tragen. Ich will aber innerhalb von xhtml Dateien bestimmte Framebereiche adressieren. Bei der Definition transitional stört mich das praktisch alles erlaubt ist. Ich halte mich aber ansonsten komplett an xhtml 1.0 und verwende css. Das ist, wenn man es sich genau überlegt, alles recht unbefriedigend. :-|
Also wer hier die ultimative Idee hat... her damit. :-)
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..
Opera 6 kann es auch, ignoriert aber anscheinend noch leider die css Angaben.
Gruss, Lars
Hi, Lars
Es geht dabei doch nur um die Definition im Kopf. Was ich meinte war angelehnt an den anderen Thread von mir bezüglich target in <a> bei der strict Definition. target gibt es da ja nicht, bei frameset schon, aber wie der Name und die Doku schon sagt, das kommt bei framesets zum tragen. Ich will aber innerhalb von xhtml Dateien bestimmte Framebereiche adressieren. Bei der Definition transitional stört mich das praktisch alles erlaubt ist. Ich halte mich aber ansonsten komplett an xhtml 1.0 und verwende css. Das ist, wenn man es sich genau überlegt, alles recht unbefriedigend. :-|
Dir geht es eher um die strict-Definition (gut!), die keine 'targets' erlaubt. Damit musst du dich abfinden. Es _ist_ so.
Also wer hier die ultimative Idee hat... her damit. :-)
Absolute Positionierung mit -> position:fixed !
Irgenwann wird es sogar der Substandard-Browser beherrschen, irgendwann. Bis dahin bietest du denkenden Wesen einen echten Mehrwert ;-)
(...) Ich bin mir übrigens nicht sicher, ob Opera 6 XML kann... IE5/6 und Mozilla können, das weiß ich..
Opera 6 kann es auch, ignoriert aber anscheinend noch leider die css Angaben.
Nein, Opera hat seit Version 4 kein Problem mit XML+CSS, nur XML+XSL mag er (noch) nicht.
LG Orlando
Es geht dabei doch nur um die Definition im Kopf. Was ich meinte war angelehnt an den anderen Thread von mir bezüglich target in <a> bei der strict Definition. target gibt es da ja nicht, bei frameset schon, aber wie der Name und die Doku schon sagt, das kommt bei framesets zum tragen. Ich will aber innerhalb von xhtml Dateien bestimmte Framebereiche adressieren. Bei der Definition transitional stört mich das praktisch alles erlaubt ist. Ich halte mich aber ansonsten komplett an xhtml 1.0 und verwende css. Das ist, wenn man es sich genau überlegt, alles recht unbefriedigend. :-|
Wenn du oder dein Auftraggeber unbedingt den IE brauchen, wirst du um Frames und XHTML 1.0 Transitional nicht umhin kommen. Oder du machst das ganze mit XHTML 1.0 Strict (oder gleich 1.1) und eben position:fixed. Da du mit einer derartig strengen Spec-Auslegung eh Netscape 4 vor die Tür setzt (der ist schon bei (naja, oder vor) HTML 4.0 Strict mit seinem Latein am Ende), würde ich zu der Transitional-Lösung raten, das ganze vom Server immer noch als text/html versuchicken lassen, aber die Seite trotzdem schon so weit wie möglich Richtung Strict trimmen.
Dann gehst du in das nächstbeste Online-Forum und legst dich mit einem Netscape 4 User an (das sind die, die jeden Website-Schreiber für unfähig halten). Dem hälst du einmal obigen Link unter die Nase und siehst, was passiert :)
Wenn du oder dein Auftraggeber unbedingt den IE brauchen, wirst du um Frames und XHTML 1.0 Transitional nicht umhin kommen. Oder du machst das ganze mit XHTML 1.0 Strict (oder gleich 1.1) und eben position:fixed. Da du mit einer derartig strengen Spec-Auslegung eh Netscape 4 vor die Tür setzt (der ist schon bei (naja, oder vor) HTML 4.0 Strict mit seinem Latein am Ende), würde ich zu der Transitional-Lösung raten, das ganze vom Server immer noch als text/html versuchicken lassen, aber die Seite trotzdem schon so weit wie möglich Richtung Strict trimmen.
Dann gehst du in das nächstbeste Online-Forum und legst dich mit einem Netscape 4 User an (das sind die, die jeden Website-Schreiber für unfähig halten). Dem hälst du einmal obigen Link unter die Nase und siehst, was passiert :)
Habe es eben noch mal in SelfHTML nachgelesen. positon scheidet aus, da ich keine Möglichkeit kenne in einen Bereich oder Layer per Link eine HTML Datei nachzuladen (oder ist mir hier wieder mal was nicht bekannt?). Genau aus diesem Grund verwende ich ja Frames. Es ist halt ein CD Projekt, bei dem es einige Kapitel gibt, jedes Kapitel beinhaltet ein Frameset, das dann aus einem gemeinsamen Pool gleichartige Navigationselemente nachlädt, aber auch in eigenen Bereichen eigene Navigatiosnelemente vorhält. So kann ich halt bestimmte Dinge einmal schreiben, die sich, ähnlich CSS, bei mehrfacher Verwendung, an zentraler Stelle gut ändern lassen und auf das gesamte Projekt Einfluss haben. Habe mich jetzt grummelnd für Transitional bei target Inhalten entschieden, da Frameset durch den CSS Validator ebenfalls verboten ist.
Gruss, Lars
hi lars,
(...) Also, was tun? Ist es überhaupt erlaubt eine XHTML Datei auf .html enden zu lassen?
wie schon in selfhtml erwaehnt :-)) - ja, es ist erlaubt.
*.xhtml ist ganz schlecht, weil manche browser (der ns4 z.b.)
voellig austicken und dir die seite schlicht zum download
anbieten. *.xml waere auch ok, aber dann bekommst du es mit den
feinheiten von xml zu tun - und ausserdem steigt dir jeder
nicht-xml-faehige browser (und das sind zur zeit die meisten) aus,
und manche halb-xml-faehigen browser zeigen dir nur den
parsebaum des dokuments, wenn ihnen das css nicht schmeckt oder
das css unvollstaendig ist (z.b. der ie ab 5.5).
bleibt *.html - die seite wird dann eben als html gerendert und
nicht als xml, aber dafuer kriegt sogar der ns4 was auf die
reihe.
nicht vergessen, die seite beim w3c http://validator.w3.org/validieren zu lassen - wennschon xhtml, dann auch richtig!
viele gruesse
helge
Moin!
Ist es überhaupt erlaubt eine XHTML Datei auf .html enden zu lassen?
Du wirst lachen, aber die Dateiendung interessiert die Browser überhaupt nicht. Die gibts eigentlich nur, damit der User was zum gucken hat. Und natürlich, damit der Webserver es relativ einfach hat, der Datei einen MIME-TYPE zuzuordnen.
Entscheidend ist nämnlich: Welchen Mime-Typ liefert dein Webserver, wenn du die Datei mit .xhtml benennst. Entsprechend verhalten sich die Browser dann (mit Ausnahme des IE, der untersucht den Dateiinhalt bei einigen Mime-Typen).
.html ist laut </selfhtml/html/xhtml/unterschiede.htm> erlaubt. Und ich würde es auch nehmen, da sind am wenigsten Probleme auch mit alten Browsern zu erwarten (die den Content-Type text/html erwarten, nicht application/xml oder sowas - das könnte das "Speichern unter..."-Fenster aktivieren, damit der User diese seltsame Datei speichert).
- Sven Rautenberg