diciamo subito che il problema maggiore (ma non l'unico) è internet explorer 6, che non sa riconoscere il MIME type application/xhtml+xml (che sarebbe il più indicato per l'xhtml).
xhtml (qualunque versione) andrebbe dunque servito come application/xhtml+xml , purtroppo a causa di IE6 un buon 80% di navigatori in questo modo avrebbe problemi, quindi il w3c ha deciso che xhtml 1.0 può essere servito come text/html, che è lo stesso che usa il vecchio html, e senza il prologo xml, garantendo in questo modo una ampia compatibilità.
Al contrario xhtml 1.1 rompe volutamente questa retrocompatibilità e va servito sempre e comunque col MIME type corretto, dando così problemi a IE6 e all'80% abbondante di utenti che lo usa. Per questo motivo attualmente è più consigliato xhtml 1.0.
Il mime type per xhtml è una questione abbastanza ingarbugliata
, comunque è necessaria una negoziazione lato server, e il modo più semplice per farla è usando un linguaggio di scripting lato server, ad esempio il php. Se ti interessa,io uso sta roba qua(me l'hanno suggerita in un altro thread):
codice:
if (
stristr($_SERVER["HTTP_ACCEPT"], "application/xhtml+xml") ||
stristr($_SERVER["HTTP_USER_AGENT"],"W3C_Validator") ||
stristr($_SERVER["HTTP_USER_AGENT"],"Safari")
)
{
header("Content-Type: application/xhtml+xml; charset=iso-8859-15");
header("Vary: Accept");
}
else
{
header("Content-Type: text/html; charset=iso-8859-1");
header("Vary: Accept");
}
in pratica, se il browser accetta application/xhtml+xml, oppure se è safari(che lo accetta anche se non lo dichiara nei request headers), oppure il validatore w3c(che è un caso a parte
), in questi 3 casi gli mando la pagina come xhtml,
negli altri casi gliela mando come html.