jaco24 Posté 3 Mai 2004 Partager Posté 3 Mai 2004 Si on veut être compatible avec le plus de versions de browsers possible doit -on écrire : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"> ou: <?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"> ou encore : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> autrement dit risque-t-il d'y avoir plus ou moins de problème selon que l'on ajoute la déclaration xml ou pas ? Merci pour toute réponse Lien vers le commentaire Partager sur d’autres sites More sharing options...
Clair de Lune Posté 3 Mai 2004 Partager Posté 3 Mai 2004 salut je ne sais pas te répondre, mais voilà ce que je mets, et ça a l'air de marcher partout : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"> et dans le head <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> j'ai vu dans d'autres forums que certains webmasters ont des problèmes si la déclaration <?xml version="1.0" encoding="iso-8859-1"?> est placée avant le DOCTYPE mais c'est peut-être obligatoire en xhtml 1.1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Raphael Posté 3 Mai 2004 Partager Posté 3 Mai 2004 Le prologue XML n'est pas obligatoire selon les usages que l'on fait du XHTML. Si on utilise XHTML pour faire du HTML (comme 90% des gens), le prologue n'est pas nécessaire. Par contre, si XHTML est utilisé comme du XML ou du MathML, le prologue est obligatoire. De même, il est obligatoire si l'encodage du document est autre que UTF-8 ou UTF-16. A l'heure actuelle, le prologue XML ne fait que basculer certains navigateurs dans le modèle de boite (erroné) de Microsoft. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Denis Posté 3 Mai 2004 Partager Posté 3 Mai 2004 Malgré le fait que j'utilise moi-même ceci : <?xml version='1.0' encoding='iso-8859-1'?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"><head> <meta http-equiv="Content-Type" content="text/HTML; charset=iso-8859-1" /><title>Title de la page en question</title> Je m'assure de passer le prologue XML seulement aux navigateurs capable de le supporter convenablement comme ceci (code php gracieusement offert par deux copains, tel que mentionné ici) : http://www.cybercodeur.net/weblog/commenta...p?idmessage=614 <?php// Indique un Mime type correct si le client accepte le vrai xhtml if( stristr($HTTP_SERVER_VARS["HTTP_ACCEPT"], "application/xhtml+xml") ) { header("Content-type: application/xhtml+xml"); echo "<?xml version='1.0' encoding='iso-8859-1'?>\n"; } else { header("Content-type: text/html; charset=iso-8859-1"); }?> Le code sert essentiellement à vérifier si l'agent utilisateur est en mesure de recevoir du application/xhtml+xml. En cas contraire, il ne présente pas le prologue xml et lui file du text/html (ce qui rejoint le propos de Sibelius). Si tu ne peux pas pour une raison ou une autre utiliser quelque chose comme ça pour départager les adultes des enfants (à savoir, les navigateurs plus performants des navigateurs moins performants comme la série des MSIE, incluant la v6.0), alors je te suggère de t'en tenir à ceci si tu veux faire du xhtml 1.1 (tout bêtement ne pas mettre le prologue) : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"><head> <meta http-equiv="Content-Type" content="text/HTML; charset=iso-8859-1" /><title>Title de la page en question</title> Ou de modifier en conséquence si tu souhaites servir du xhtml strcit ou transitionnel, ce qui signifie tout simplement changer ton doctype et ajouter un lang="fr" (seulement au transitionnel). J'espère que ça peut aider un peu ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
jd_ Posté 3 Mai 2004 Partager Posté 3 Mai 2004 Elle est géniale ton astuce PHP. C'est tout bête et tout performant Lien vers le commentaire Partager sur d’autres sites More sharing options...
jaco24 Posté 3 Mai 2004 Auteur Partager Posté 3 Mai 2004 Merci pour vos réponses. Maintenant c'est clair pour moi. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Denis Posté 5 Mai 2004 Partager Posté 5 Mai 2004 C'est pas moi qu'il faut remiercier... c'est mes copains Darken et Anubis ! Heureux que ça te plaise. Tant mieux si ça peut être utile à d'autres. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yonji Posté 3 Octobre 2004 Partager Posté 3 Octobre 2004 (modifié) Bonjour, Très intéressante comme astuce,je suis d'ailleur en train de l'essayer,mais j'ai une question. Si je fait ceci : <?php// Indique un Mime type correct si le client accepte le vrai xhtml if( stristr($HTTP_SERVER_VARS["HTTP_ACCEPT"], "application/xhtml+xml") ) { header("Content-type: application/xhtml+xml"); echo "<?xml version='1.0' encoding='UTF-8'?>\n"; } else { header("Content-type: text/html; charset=UTF-8"); }?><html><head><title>Titre de ma page</title><style type="text/css"> _AT_import url(style.css);</style></head> <body>...... Sous IE si je regard la source j'ai bien ça : <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> Mais sous Firefox rien,la source commence a <html>. Est ce normale ? Merci d'avance pour vos réponse. Modifié 3 Octobre 2004 par Yonji Lien vers le commentaire Partager sur d’autres sites More sharing options...
LaurentDenis Posté 3 Octobre 2004 Partager Posté 3 Octobre 2004 (modifié) Si tu obtiens ces résultats, ce n'est pas vraiment normal en effet En utilisant tel quel le code que tu cites, j'obtiens au contraire: - un prologue xml et le type mime application/xhtml+xml dans Firefox et Opera - pas de prologue et le type mime text/html dans IE Heureusement, d'ailleurs, puisque ces résultats correspondent aux capacités respectives de ces navigateurs Au passage, le code ci-dessus devrait être complété pour ajouter en particulier : - la DTD XHTML1.0 dans tous les cas - l'élément <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> en application/xhtml+xml et un simple <html lang="fr"> en text/html - la CSS par défaut avec <?xml-stylesheet type="text/css" href="..." ?> en application/xhtml+xml et un simple <link rel="..."> en text/html Modifié 3 Octobre 2004 par LaurentDenis Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yonji Posté 3 Octobre 2004 Partager Posté 3 Octobre 2004 (modifié) Bon c'est bon maintenant j'obtient le prologue XML sous Firefox & Opéra (plus sous IE). +1 avec la dernière remarque de Laurent si vous pouviez rajouter les changement pour le css ... (je ne maitraisie pas php d'ou cette demande ) Merci d'avance. Modifié 3 Octobre 2004 par Yonji Lien vers le commentaire Partager sur d’autres sites More sharing options...
Denis Posté 3 Octobre 2004 Partager Posté 3 Octobre 2004 Pour ma part, je dois avouer que pour ce qui est de passer ma CSS en xml-stylesheet, Laurent m'avait mis au défi de le faire et je n'y suis jamais parvenu... Lien vers le commentaire Partager sur d’autres sites More sharing options...
LaurentDenis Posté 4 Octobre 2004 Partager Posté 4 Octobre 2004 (modifié) ça n'était pas un défi, Denis, juste une suggestion Cela dit, tout en vous prévenant que j'écris comme un cochon en PHP et que ce script est à améliorer, voici ce que j'utilise : <?php $accept_xml = !empty($_SERVER['HTTP_ACCEPT']) && strpos($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml') !== false; if ($accept_xml) { header('Content-Type: application/xhtml+xml; charset=ISO-8859-1'); echo '<?xml version="1.0" encoding="ISO-8859-1"?>'."\n"; echo '<?xml-stylesheet type="text/css" href="style.css" ?>'."\n"; }else { header('Content-Type: text/html; charset=ISO-8859-1');} ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><?php if ($accept_xml) { ?><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <link rel="schema.DC" href="http://purl.org/DC/elements/1.0/" /> <meta name="DC.Format" content="application/xhtml+xml; charset=ISO-8859-1" /><?php }else { ?> <html lang="fr"> <head> <link rel="schema.DC" href="http://purl.org/DC/elements/1.0/" /> <meta name="DC.Format" content="text/html; charset=ISO-8859-1" /> <style type="text/css" media="screen" title="defaut">@import url(style.css);</style><?php } ?> <title>...</title> </head>etc... La fonction récupérant le type-mime souhaité par le navigateur est un peu différente (empruntée à DotClear), mais le principe est identique. Le schéma Dublin Core est plus une coquetterie qu'autre-chose et devrait être remplacé/complété par une <meta http-equiv="Content-Type" content="..." /> plus classique. Modifié 4 Octobre 2004 par LaurentDenis Lien vers le commentaire Partager sur d’autres sites More sharing options...
Monique Posté 4 Octobre 2004 Partager Posté 4 Octobre 2004 Bonjour, A lire, un article intéressant (même s'il date de prés d'un an) de Karl Dubost : Comment servir XHTML avec le bon type mime sans oublier de suivre le renvoi vers un billet... où Denis donne un argument choc pour bien choisir son navigateur Lien vers le commentaire Partager sur d’autres sites More sharing options...
Denis Posté 4 Octobre 2004 Partager Posté 4 Octobre 2004 Incroyable ce que je peux écrire comme conneries ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Xavier Posté 5 Octobre 2004 Partager Posté 5 Octobre 2004 Un problème soulevé par cette (ces en fait, php ou configuration du serveur) techniques est que les navigateurs de type KHTML (Konqueror ou Safari pour ne pas les nommer) n'indiquent pas accepter le type MIME application/xhtml+xml dans leur HTTP_ACCEPT Du coup on leur sert du text/html alors que bien entendu ils supportent très bien le xhtml Ce n'est pas très grave mais ça mérite tout de même d'être mentionné Lien vers le commentaire Partager sur d’autres sites More sharing options...
LaurentDenis Posté 5 Octobre 2004 Partager Posté 5 Octobre 2004 Dans la mesure où de toute façon, ces navigateurs reçoivent une version HTML complète du contenu, partaitement exploitable bien qu'en deça de leurs capacités, ça n'a en effet aucune importance. L'erreur serait en fait de recourir à un script basé sur l'identification du navigateur plutôt que sur ses capacités déclarées... Heu... En fait, adresser du XHTML1.0 en application/xhtml+xml ou en text/html n'a actuellement aucune importance pour le visiteur quelque-soit le navigateur. C'est juste une satisfaction pour l'auteur Lien vers le commentaire Partager sur d’autres sites More sharing options...
Denis Posté 5 Octobre 2004 Partager Posté 5 Octobre 2004 Bien dit Laurent. C'est vrai qu'encore une fois, on perd de vue l'objectif de cette grande chasse aux sorcières : faire tout propre,propre, propre... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yonji Posté 7 Octobre 2004 Partager Posté 7 Octobre 2004 Super ton code Laurent !!! Marche niquel j'ai filer le tuyeau a des potes qui sont eux aussi ravi. Topic qui ma était tres instrutif pour ma part merci les gars et Monique pour le liens Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant