Je gère un forum qui sert ses pages en XHTML + MathML + SVG; en entier:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg-flat.dtd">
En utilisant le plugin MathPlayer, les utilisateurs d'Internet Explorer peuvent utiliser ce site. Cependant, parfois, quelqu'un utilise le forum d'IE et n'est pas en mesure d'installer MathPlayer (peut-être se trouve-t-il sur une machine publique quelque part). Ensuite, IE (au moins 6 et 7) se plaint du XHTML et propose simplement de télécharger le fichier.
J'ai lu sur le site w3c comment contourner cela en utilisant une transformation XSL ( http://www.w3.org/MarkUp/2004/xhtml-faq#ie ). Lorsque j'ai mis cela en place, j'ai trouvé que Chrome se plaignait maintenant vociférément d'entités non définies (la spécifique était,
mais les tests montrent que ce n'est pas pertinent).
Bizarrement, je peux contourner cela en déclarant manuellement les entités dans le DOCTYPE:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg-flat.dtd" [
<!ENTITY nbsp " ">
]>
mais je préfère ne pas le faire pour toute la gamme d'entités possible. Je dis "bizarrement" parce que le dtd XHTML + MathML + SVG déclare, autant que je sache, ces entités. Donc, d'une manière ou d'une autre, ces éléments sont oubliés.
Existe-t-il un moyen de contourner ce problème? Puis-je servir XHTML-avec-entités à IE?
Dans le cas où cela importe, les pages sont générées par un script php et sont servies via apache, donc s'il existe une méthode fiable pour renifler le navigateur et modifier le début du document (donc n'envoyer que le <?xml-stylesheet ...>
bit à IE), alors ce serait un alternative acceptable.
(J'espère avoir le bon site SE ... s'il vous plaît laissez-moi savoir si je suis au mauvais endroit. Idem avec les balises.)