2010-10-04 6 views
0

je la simple feuille de style XSL suivant:comportement du navigateur avec XSL - Firefox différent de IE/Chrome

<?xml version="1.0" encoding="windows-1252"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns="http://www.w3.org/1999/xhtml" version="1.0"> 
    <xsl:output encoding="utf-8" method="html" /> 

    <xsl:template match="/"> 

    <xsl:text disable-output-escaping="yes"> 
    &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt; 
     </xsl:text> 
    <html> 
     <head><title>hello world</title></head> 
     <body> 
     <p>hello world</p> 
     </body> 
     </html> 
    </xsl:template> 

    </xsl:stylesheet> 

Quand je l'utilise, Internet Explorer 7 et Safari 5.0.2 à la fois afficher simplement "Bonjour tout le monde" , comme prévu. Cependant, Firefox 3.6.10 affiche quelque chose différent:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

hello world 

Je devine que Firefox prend la première commande xsl: texte littéralement, tandis que IE et Safari traitent comme une partie de la page. IE et Safari sont-ils correctement rendus, ou est-ce Firefox?

(je fais xsl:. Chose texte pour la sortie de la bibliothèque MSXML les balises correctes pour la conformité HTML5)

Répondre

1

Pour Ouput déclaration DOCTYPE pour le mode standar render n'est pas nécessaire pour le navigateur moderne. Seul IE a quelques problèmes: il rend en mode standar mais perd les nouvelles fonctionnalités du moteur CSS (IE7 rollback à IE6, par exemple). La déclaration xsl:output est le meilleur outil, mais une version d'Opera a un problème avec fn:document lors de l'utilisation de la déclaration de sortie avec les identificateurs PUBLIC et SYSTEM. Je devrais tester Opera 10.X nouveau comportement que Opera 9.X a très faible part de marché. La seule solution consiste à afficher la déclaration DOCTYPE comme vous l'avez fait (texte DOE), mais uniquement pour IE: vous pouvez tester la fonction xsl:vendor avec system-property.

+0

Je viens d'essayer Opera 10.62 et apparemment, il ne veut pas afficher de XSL du tout. Y a-t-il une astuce secrète pour faire ce travail? – Colen

+1

@Colen: J'ai un ancien site de navigation croisée XML/XSLT [ici] (http://www.aranedabienesraices.com.ar). N'hésitez pas à réutiliser ce code. –

+0

Merci beaucoup! – Colen

Questions connexes