Page 1 sur 1

Ouvrir un document XHTML avec Internet Explorer

Posté : 21 mai 2007, 15:51
par MainMa
Bonjour,

Est-ce qu'il y a une possibilité d'afficher un document XHTML avec Internet Explorer 6 et 7 ?

En fait, je veux utiliser sur mon site des fonctions disponibles uniquement dans XHTML, par exemple MathML, SVG ou encore une DTD spécifique ; ça marche très bien sous Firefox, mais j'arrive pas à trouver la façon de faire tourner ça avec IE...

Posté : 23 mai 2007, 17:38
par Victor BRITO
Une page XHTML traitée en tant que XML posera un problème sous Internet Explorer.

Posté : 23 mai 2007, 19:39
par MainMa
Oui oui, je vois bien que ça pose problème. Mais... comment alors pouvoir utiliser MathML etc. ? (Sans obliger bien sûr les utilisateurs IE à installer un plugin, un addon etc.)

Posté : 23 mai 2007, 21:20
par Cyrano
Je ne m'avancerai pas trop avant dans les détails et je donne cette réponse avec quelques réserves. Il me semble, si tu veux envoyer d'autres formats XML que le XHTML, qu'il faut préciser les ajouts de DTD dans ton en-tête de page de façon à ce que le navigateur puisse les trouver s'il ne sont pas intégrés dedans.

La DTD XHTML est intégrée dans les navigateurs, donc à la limite, si on ne met pas de DOCTYPE, le navigateur va le lire quand même malgré le fait que l'absence du DOCTYPE rende le code non valide. Mais pour le MathML par exemple, il est possible (probable ?) que tous les navigateurs ne l'intègrent pas. Donc il faut ajouter cet élément dans le DOCTYPE.

Fouille un peu la documentation sur le XML, tu devrais trouver des éléments te permettant de faire ce que tu décris.

Posté : 23 mai 2007, 22:34
par MainMa
Sauf que je n'arrive même pas à inclure le DTD dans le fichier XHTML ; sous Firefox tout marche, par contre IE, lui, m'imprime "]>" en tant que première ligne sur l'écran.

Mais... enfin... je ne comprends pas un truc. IE sait très bien utiliser XML (il arrive à le lire, quoi). Il doit y avoir donc une façon de lui faire lire XHTML aussi, non ? :roll:

Posté : 23 mai 2007, 22:36
par Cyrano
Fais donc voir des extraits de ton code, ce sera plus parlant :-k

À tout hasard, ton fichier commence-t-il bien par :

Code : Tout sélectionner

<?xml version="1.0" encoding="iso-8859-1"?>
:?:

Posté : 23 mai 2007, 23:35
par MainMa
Bon, prenons un exemple tout simple. On a un fichier XHTML avec un DTD qui ne contient qu'un seul "ENTITY", pour bien voir que le DTD est pris en compte. Le script entier est :

Code : Tout sélectionner

<?php header("Content-Type: application/xhtml+xml; charset=ISO-8859-1"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [ <!ENTITY test "This is a test"> ]> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> </head> <body> <div>&test;</div> </body> </html>
Ainsi, Firefox va nous afficher juste :

This is a test

Lorsqu'on passe à IE6, celui-ci ne comprend pas ce qu'on veut de lui (à cause du Content-type "application/xhtml+xml"), et propose donc de télécharger le fichier sur le disque. Pour lui faire comprendre qu'il s'agit d'un fichier XHTML, on l'envoie comme une simple page HTML, sans préciser le "application/xhtml+xml". Sauf que dans ce cas, IE nous affiche gentillement :

]>
&test;


ce qui veut dire qu'il n'a rien compris à notre DTD.

Vous voyez la chose ?

Posté : 23 mai 2007, 23:46
par MainMa
PS. En mettant "<?xml version="1.0" encoding="iso-8859-1"?>" avant le "<!DOCTYPE...", rien ne change.

Posté : 24 mai 2007, 07:44
par Cyrano
Encore une fois, je ne garantis rien et mon bouquin sur le XML est chez moi, je ne l'aurai que ce soir, donc sous réserve, essaye comme ceci :
<?php
echo('<?xml version="1.0" encoding="iso-8859-1"?>' . "\n");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<!ENTITY test "This is a test">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Test</title>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=ISO-8859-1" />
  </head>
  <body>
    <div>&test;</div>
  </body>
</html>
De mon coté, ça fonctionne tous navigateurs.

Posté : 24 mai 2007, 11:53
par MainMa
Bah chez moi, et sous Firefox 2, et sous IE 6 je ne vois que :

&test;

(encore heureux, on ne voit plus la fin de la DTD sous IE).

Posté : 24 mai 2007, 12:09
par Cyrano
Petit détail : les balises "<!NOMDEBALISE>" ne sont ni du HTML ni du XML : c'est du SGML. Ce qui sera affiché dans ta page ne sera que ce qui est compris entre les balises <body> et </body>. Il est donc normal que tu ne voies pas ce qu'il y a dans ta balise <!ENTITY >.

Posté : 24 mai 2007, 13:11
par MainMa
Petit détail : les balises "<!NOMDEBALISE>" ne sont ni du HTML ni du XML : c'est du SGML. Ce qui sera affiché dans ta page ne sera que ce qui est compris entre les balises <body> et </body>. Il est donc normal que tu ne voies pas ce qu'il y a dans ta balise <!ENTITY >.
En tout cas, lorsque l'on a dans DTD "<!ENTITY test "This is a test">", en mettant "&test;" dans le document XHTML on doit voir "This is a test", et rien d'autre. Tout autre truc indique que le DTD n'est pas pris en compte par le navigateur pour ce fichier (soit parce que le navigateur est pourri, soit parce que le fichier est mal écrit ou mal envoyé et est par exemple interprété comme HTML, et non comme XHTML).

Je ne comprends pas donc très bien la remarque...