# XHTML 1.1 validieren - Important Warning!



## Radhad (8. August 2007)

Hallo zusammen,

ich verstehe iene Meldung beim W3C Validator nicht. Und zwar geht um diese Prüfung: http://validator.w3.org/check?uri=http//www.codegroup.de/

Da steht folgendes:

```
Conflict between Mime Type and Document Type

The document is being served with the text/html Mime Type which is not a registered media type for the XHTML 1.1 Document Type. The recommended media type for this document is: application/xhtml+xml

Using a wrong media type for a certain document type may confuse the validator and other user agents with respect to the nature of the document, and you may get some erroneous validation errors. How to fix this problem? One of the following techniques should help:

    * If you are serving a static file on a Web server, changing its extension should help. Use e.g .xhtml for XHTML or .mathml for MathML.
    * You may need to reconfigure your Web server. This Setting up MIME Types tutorial has instructions for Apache, Tomcat and IIS.
    * If the document is generated dynamically, the scripting language should allow you to set up the mime type: this article on MIME Types and Content Negotiation has examples in PHP, Perl, and ASP.
```

Versteht jemand den Fehler und weiß, wie man das behebt? Im Quelltext wird eigentlich application/xhtml+xml angegeben - aber wie es aussieht als meta-Tag. Sollte man das evtl. besser als PHP-header() setzen? Ich bin ziemlich ratlos ^^



Gruß Radhad


----------



## Gumbo (8. August 2007)

Die Angabe des Inhaltstyp im HTTP-Header und im Dokument selbst sind unterschiedlich (siehe Web-Sniffer-Ergebnis). Da die im HTTP-Header befindlichen Angaben eine höhere Gewichtung haben, würde also „text/html“ genommen. Dieser Inhaltstyp sollte allerdings laut der Spezifikation zu XHTML 1.1 nicht verwendet werden (siehe XHTML Media Types), stattdessen sollte der Inhaltstyp „application/xhtml+xml“ verwendet werden. Dieser wird allerdings von älteren Webbrowsern (unter anderem auch Internet Explorer) nicht unterstützt, da ihnen auch die grundlegende XHTML-Unterstützung fehlt. Dies bedeutet wiederum, dass richtiges XHTML (mit dem korrekten Inhaltstyp ausgeliefert) für die breite Masse eigentlich nicht geeignet ist. Der Schluss daraus: verwende normales HTML.


----------



## Radhad (9. August 2007)

Also quasi Rückschritt auf XHTML 1.0 ?  Gefällt mir weniger - werde ich wohl oder übel mal testen müssen mit verschiedenen Browsern (IE 5.5 & höher, Opera 8 und höher, Firefox 1.5.x & höher, Apple Safari for Win) ... Wenn es mit denen allen klappt bin ich schon zufrieden. Falls der Opera 8 und der IE 5.5 durchfallen, ist es zu verschmerzen, Firefox 1.5.x eigentlich auch, da die Zahl der User rückläufig ist.

Wie kann ich denn den Content-Type im HTTP Response Header ändern? Ist das eine Apache Einstellung?


----------



## Gumbo (9. August 2007)

Weswegen soll es denn unbedingt XHTML 1.1 sein? Tatsache ist, dass XHTML von der Mehrzahl (vor allem der Internet Explorer) noch nicht unterstützt wird.

Den Standard-Inhaltstyp kannst du übrigens mit folgender Direktive festlegen:
	
	
	



```
DefaultType application/xhtml+xml
```


----------



## Radhad (9. August 2007)

Mein Ziel ist es eigentlich up-to-date zu entwickeln und die Webstandards einzuhalten.

Sollte die Seite mit dem Internet Explorer fehlerhaft sein, würde ich umschwenken auf XHTML 1.0 strict, aber nicht auf HTML 4.01 oder irgendwas dazwischen, was nicht valide ist (was ja meistens der Fall ist).

Ich will ja nicht >5% des "Marktes" auschließen, aber bei unter 5% wär es mir ziemlich egal (zumal diese Seite nicht kommerziell sein soll).


----------



## Gumbo (9. August 2007)

Radhad hat gesagt.:


> Mein Ziel ist es eigentlich up-to-date zu entwickeln und die Webstandards einzuhalten.


Die Weiterentwicklung von XHTML (XHTML 2) ist derzeit eingestellt – eben weil die Webbrowser-Entwickler mit der XHTML-Unterstützung nicht so schnell nachkommen. Stattdessen wird gerade an HTML 5 gearbeitet, die direkter Nachfolger von HTML ist.



Radhad hat gesagt.:


> Sollte die Seite mit dem Internet Explorer fehlerhaft sein, würde ich umschwenken auf XHTML 1.0 strict, aber nicht auf HTML 4.01 oder irgendwas dazwischen, was nicht valide ist (was ja meistens der Fall ist).


Willst du damit sagen, dass es schwieriger ist ein valides HTML-Dokument zu schreiben als ein valides XHTML-Dokument?


----------



## Radhad (9. August 2007)

Nein, ist mehr eine Sache der Gewohnheit. Generell fällt aber auf, dass die meisten professionellen Webseiten durch einen Validator rasseln, da darauf nicht geachtet wird. Jeder Browser wird dann auch höchstwahrscheinlich im Quirks Mode laufen.

Nur muss man halt testen, ob wirklich Probleme auftreten, wenn man XHTML 1.1 oder XHTML 1.0 auftreten. Bisher konnte ich so etwas nicht beobachten.

HTML 4.01 würde ich persönlich nicht verwenden, weil eigentlich veraltet ist. XHTML 1.0 ist aber dazu kompatibel - XHTML 1.1 nicht. Daher hab ich kein Problem mit "try & error" an der Stelle.


----------



## Gumbo (9. August 2007)

Radhad hat gesagt.:


> Generell fällt aber auf, dass die meisten professionellen Webseiten durch einen Validator rasseln, da darauf nicht geachtet wird.


Eine Studie aus dem Jahr 2001 zufolge waren gerade einmal 0,7% aller untersuchten Webseiten valide; ein aktueller Schätzwert wäre etwa 3%. Ein valides (X)HTML-Dokument ist also eher eine Ausnahme als die Regel.
Dein Engagement, nur valide Dokumente auszuliefern, ist daher schon lobenswert.



Radhad hat gesagt.:


> HTML 4.01 würde ich persönlich nicht verwenden, weil eigentlich veraltet ist.


HTML 4.01 ist die derzeit aktuelle HTML-Version und somit keineswegs veraltet. XHTML 1.0 ist ja auch nicht die Nachfolgeversion von HTML 4.01 sondern nur das XML-konforme Gegenstück zu HTML.


----------



## Radhad (9. August 2007)

Aber XHTML 1.0 ist doch kompatibel zu HTML 4.01 und gaaanz langsam schwenkt man doch um Richtung XML-Konformität oder sehe ich das falsch? Ich meine, nicht umsonst brachte man neue Standards in XHTML Form raus anstatt eine HTML Version 5.0 ...


----------



## Gumbo (9. August 2007)

Das ist alles richtig. Nur ist die Welt für diese Standards noch nicht bereit. (Siehe unter anderem David Hammonds „Beware of XHTML“.)


----------



## Radhad (9. August 2007)

Irgendwie hängt die Welt doch immer hinterher...

Dann wäre es mal interessant, in mein Template System (PHP) ne Weiche einzubauen, um zu prüfen, was der Browser unterstützt und je nachdem die Seite in XHTML 1.0 / 1.1 oder HTML 4.01 anzuzeigen. Das würde mich mal interessieren. Natürlich müsste es dann auch entsprechende Templates geben


----------



## Gumbo (10. August 2007)

Mal wieder sind es die Webbrowser, die dies erschweren. Denn eigentlich sollten sie dem Webserver mitteilen, welche Inhaltstypen bevorzugt werden („Accept“-Header-Feld), doch diese Information ist teilweise fehlerhaft oder fehlt sogar ganz.


----------



## Radhad (10. August 2007)

Das habe ich mir schon gedacht. Aber da kann man selber ja nicht allzu viel machen. Entweder man hat eine "white-list" von Browsern, wo man weiß, dass da XHTML 1.0 / 1.1 geht (als Array von mir aus) und lädt entsprechend die jeweiligen Templates oder es gibt generell ein Fallback auf HTML 4.01, wenn "application/xhtml+xml" bzw. "text/xml" fehlen. "text/xml" wäre meines erachtens die einzige Unterscheidung zwischen XHTML 1.0 und XHTML 1.1 - obwohl da könnte man auch gleich XHTML 1.0 weglassen - frei nach dem Motto "ganz oder garnicht"  Da kommt aber das nächste Problem: manche Browser-Kennungen stimmen nicht, somit lassen sich manche Browser auch nicht eindeutig identifizieren. Irgendwie fehlt ein vernünftiger Browser-Standard 

Ist auf jeden Fall ein sehr interessantes Thema!


----------

