Hallo,
Heraus gekommen ist folgendes, der mime-typ in meinem meta-tag wird einfach ignoriert.
Das erstaunt mich ueberhaupt nicht.
Ich weiss nicht, warum die Leute so geil sind auf Meta-Tags,
wenn es offensichtlich um Dinge geht, fuer die eigentlich
der Server zustaendig ist (HTTP-Header).
Und ich fragte mich, woher der (Aber)Glaube kommt, dass Meta-Tags
das Verhalten eines Webservers beeinflussen koennten...
Ich habe mich also auf die Suche gemacht und wieder
mal etwas dazu gelernt...
1. Beschreibung von META in HTML 3.2
http://www.w3.org/TR/REC-html32#meta
"HTTP servers may use the property name specified
by the HTTP-EQUIV attribute to create an
RFC 822 style header in the HTTP response"
2. Beschreibung von META in HTML 4.01
http://www.w3.org/TR/html401/struct/global.html#edef-META
"HTTP servers may use the property name specified
by the http-equiv attribute to create an
RFC822-style header in the HTTP response."
http://www.w3.org/TR/html401/struct/global.html#adef-http-equiv
"http-equiv
This attribute may be used in place of the name attribute.
HTTP servers use this attribute to gather information for
HTTP response message headers."
Das klingt, als ob alle Webserver das auch wirklich taeten.
Aber es steht AFAIK nirgends, dass sie es tun _muessen_ oder auch
nur _sollten_.
3. XHTML 1.0 Spec., Appendix C.9
http://www.w3.org/TR/xhtml1/#C_9
"Note: be aware that if a document must include the character
encoding declaration in a meta http-equiv statement, that
document may always be interpreted by HTTP servers and/or
user agents as being of the internet media type defined
in that statement."
Ich fand also keine offizielle Stelle, die sagt,
dass ein HTTP-Server die Meta-Tags in HTML-Dateien
beachten _muss_ (MUST) oder auch nur _sollte_ (SHOULD).
Stets ist nur die Rede von _kann/darf_ (MAY).
(In den zitierten Texten sind die Woerter _nicht_
grossgeschrieben, aber in den Einleitungen von
HTML 4.01 und XHTML 1.0 steht, dass sie trotzdem
gemaess RFC 2119 oder sinngemaess gemeint sind.)
In zahlreichen Aussagen zu Meta-Tags in SelfHTML
klingt es so, als ob man damit tatsaechlich das
Verhalten von vielen Webservern steuern koenne,
wobei das auch gleich wieder relativiert wird:
http://selfhtml.teamone.de/html/kopfdaten/meta.htm#allgemeines
"Als Autor der HTML-Datei können Sie auf diese Weise also
die Kommunikation zwischen Web-Server und Web-Browser
beeinflussen. Inwieweit Angaben dieser Art etwas bewirken,
hängt also vom Web-Server ab bzw. davon, ob er diese Daten
vor dem Übertragen der Datei an den Browser ausliest oder nicht."
Gemaess meinen Tests ignoriert zumindest der (weit verbreitete)
Apache 1.3.x die Meta-Tags (z.B. das Beispiel aus der
HTML 4.01 Specification), d.h. er macht daraus keine
HTTP-Header.
Es nimmt mich wunder, ob ueberhaupt ein real existierender
Webserver wirklich in die HTML-Dateien reinguckt und aus
den Meta-Tags HTTP-Header macht.
Ist es nämlich eine .html datei, die ich aufrufe, ist der content-type im http-header "text/html" laut der HTTP HEAD Service Seite. Ist die Dateiendung aber xhtml, ist der content-type "application/xhtml+xml".
Das liegt vermutlich an der Server-Konfiguration.
In beiden Fällen hatte ich in meinem meta-tag aber "text/html" stehen.
IMHO irrelevant.
Nun wird aber meine Seite nur dann richtig interpretiert (nicht geschlossene Tags führen zu Fehler des XML-Parsers zum Beispiel) wenn der content-type "application/xhtml+xml" ist,
Ob das "richtig" ist, sei mal dahingestellt.
_Du_ moechtest, dass Dein XHTML "streng" behandelt wird.
Und dass der MS IE es zum Download anbietet, statt
das Dokument anzuzeigen...
Zur Frage, mit welchem Content-Type man XHTML ausliefern sollte,
stehen ein paar Links im bereits genannten Thread: [pref:t=77771&m=449928]
ist der content-type nur "text/html", stören nicht-xhtml konforme Ausdrücke nicht, wie zum Beispiel die nicht geschlossenen Tags.
text/html wird von den Browsern als Tag-Soup interpretiert
und dementsprechend versuchen sie, moeglichst viele Fehler
zu tolerieren...
Wie krieg ich jetzt den content-type "application/xhtml+xml" im http-header hin ohne die Endung xhtml nutzen zu müssen, sondern zum Beispiel mit der Endung .html oder .php ?
Das schrieb ich doch schon in [pref:t=77822&m=450035]
RTFM.
Wenn es ein Apache ist, kannst Du meist mit AddType in der
.htaccess den MIME-Type bestimmen.
http://httpd.apache.org/docs/mod/mod_mime.html#addtype
http://httpd.apache.org/docs-2.0/mod/mod_mime.html#addtype
Wenn Du endlich die URL oder wenigstens den
Server-Typ verraten wuerdest, muessten wir
weniger glaskugeln...
Gruesse,
Thomas