Page 1 sur 4
Compatibilité XHTML
Publié : 25 juin 2004, 14:24
par vector
Salut,
Afin de respecter au mieux XHTML 1.1, j'utilise ce code pour ma page d'index :
Code : Tout sélectionner
<?php
//Teste si le client accepte le type MIME "application/xhtml+xml" et s'il supporte XHTML 1.1
$xhtml11 = stristr($_SERVER["HTTP_ACCEPT"], "application/xhtml+xml");
if($xhtml11)
{
header("Content-Type: application/xhtml+xml");
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"\n \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n";
}
else
{
header("Content-Type: text/html");
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
}
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title><?php //Réservé pour usage futur ?></title>
<?php
if(!$xhtml11)
{
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n";
}
?>
</head>
<body>
<?php
if(!$xhtml11)
{
echo "<p>Votre navigateur ne supporte pas complétement la spécification XHTML 1.1 du W3C !</p>";
}
?>
</body>
</html>
J'envoie donc du XHTML 1.1 en application/xhtml+xml aux navigateurs compatibles et du XHTML 1.0 en text/html aux autres.
J'aimerais donc votre avis sur ce code et si dans le principe c'est correct .
Merci.
Publié : 25 juin 2004, 14:31
par Xanthor
En première approximation c'est tout à fait correct d'un point de vue théorique.
En deuxième approximation, on constate que tu rejètes les navigateurs qui annonce accepter
application/* (ce qui est mal, mais bon, il y en a, comme W3M)
Maintenant en pratique, tu vas accepter Opera qui prétend gerer le XHTML. C'est en fait presque le cas, sauf si on commence à utiliser du DOM (comme le démontre
ce test).
Publié : 25 juin 2004, 14:32
par calimo
Salut,
C'est correct en effet, sauf que le XHTML 1.1 n'apporte rien de bien nouveau par rapport au XHTML 1.0, à part le ruby. Donc si tu n'utilise pas le ruby, il vaut mieux faire ta page en XHTML 1.0, qui permet une meilleure rétrocompatibilité avec les anciens navigateurs.
À ce propos, je te conseille la lecture de cet article de
Blog & Blues :
XHTML1.1, beaucoup de bruit pour rien
à part ça je te conseille de définir l'encodage dans l'en-tête :
Code : Tout sélectionner
header("Content-Type: application/xhtml+xml; charset=utf-8");
Tu peux faire la même chose pour le HTML

Publié : 25 juin 2004, 14:49
par Xanthor
calimo, la question n'est pas XHTML 1.1 ou XHTML 1.0, mais text/html ou application/xhtml+xml.
Et en l'occurence, les avantages du dernier media type sont bien connus
Publié : 25 juin 2004, 15:51
par SB
Pas par moi. Où les trouve-t-on ?
Publié : 25 juin 2004, 16:22
par Xanthor
Publié : 25 juin 2004, 16:41
par SB
Heu...j'aurais du préciser : où les trouve-t-on en français ?
Publié : 25 juin 2004, 16:50
par calimo
Bon, en gros si tu écris
en HTML ça devrait (théoriquement on s'entend

) apparaitre comme
En plus il y a des problèmes avec les commentaires qui sont enfin de vrais commentaires, donc si tu enfermes ton script ou tes styles dedans ils ne seront pas lus

Publié : 25 juin 2004, 16:57
par SB
D'après ce que j'ai compris, les 2 problèmes principaux seraient que du xhtml incorrect serait encore plus mal interprété en text/html qu'en application/... et qu'au moment du passage à cette dernière des problèmes surviendront notamment pour les commentaires.
Comme mon xhtml est correct le cas numéro 1 ne me concerne pas.
Pour le cas numéro 2, je rectifierai à ce moment là.
Je n'ai vu aucune raison incontournable pour ne pas envoyer mes pages en text/html.
Publié : 25 juin 2004, 17:39
par vector
Tiens, je conaissais pas l'encodage spécifié directement dans l'entete. ^^ Merct
Publié : 25 juin 2004, 18:13
par Xanthor
SB a écrit :Je n'ai vu aucune raison incontournable pour ne pas envoyer mes pages en text/html.
Tu sais, tu peux même les envoyer en text/plain si tu veux...
Un des interets du application/*+xml est que le document sera interpreté par un parseur XML (au lieu d'un parseur SGML pour le text/html), et donc beaucoup plus rapidement, avec un report des erreurs, et avec tous les outils dont dispose le XML (et pas le SGML), comme XPointer par exemple
Publié : 26 juin 2004, 02:21
par spoutnik
Juste pour signaler que l'attribut xml:lang ne sert à rien pour un document envoyé avec le mime text/html
<html xmlns="
http://www.w3.org/1999/xhtml"
xml:lang="fr"> vu que cela devient simplement du HTML pour Moz.
L'attribut lang="" s'impose donc dans ce cas (avis perso cependant)
Il ne faut pas non plus oublier que Mozilla (gecko) tient compte du type mime mais également de l'extension que l'on donne à un fichier.
si text/html alors .html
si application/xhtml+xml alors .xhtml
Pour l'info complète voir sur la page
http://www.mozilla.org/newlayout/xml/#xhtml sur le support du xhtml dans Moz.
En espèrant que cela puisse aider un peu
Publié : 26 juin 2004, 12:16
par vector
Oui, mais là il n'y a que le type mime car c'est mélé au PHP.
Publié : 26 juin 2004, 20:44
par Xanthor
spoutnik a écrit :Il ne faut pas non plus oublier que Mozilla (gecko) tient compte du type mime mais également de l'extension que l'on donne à un fichier.
Attention ! C'est uniquement vrai pour les fichiers locaux, c'est à dire non accedés par HTTP, sans serveur web...
Dans le cas contraire, Moz se moque totalement de l'extension, suivant en cela les specs HTTP...
Publié : 26 juin 2004, 20:55
par jv2759
Xanthor a écrit :spoutnik a écrit :Il ne faut pas non plus oublier que Mozilla (gecko) tient compte du type mime mais également de l'extension que l'on donne à un fichier.
Attention ! C'est uniquement vrai pour les fichiers locaux, c'est à dire non accedés par HTTP, sans serveur web...
Dans le cas contraire, Moz se moque totalement de l'extension, suivant en cela les specs HTTP...
Et pour preuve :
http://www.geckozone.org/forum/viewtopic.php?t=6115