2008-10-21 6 views
9

J'essaie de générer des pages XML générées dynamiquement à partir d'un serveur Web et de fournir un fichier xslt statique personnalisé depuis le même serveur Web, afin de décharger le fichier. traitement dans le navigateur Web du client.Firefox 3 n'applique pas ma feuille de style xslt, mais les autres navigateurs

Jusqu'à récemment, j'avais bien fonctionné dans Firefox 2, 3, IE5, 6 et Chrome. Récemment, cependant, quelque chose a changé, et Firefox 3 affiche maintenant seulement les éléments de texte dans la source.

La source de la page commence comme ceci:

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Firefox 2.0 and Internet Explorer 7 use simplistic feed sniffing to override desired presentation behavior for this feed, and thus we are obliged to insert this comment, a bit of a waste of bandwidth, unfortunately. This should ensure that the following stylesheet processing instruction is honored by these new browser versions. For some more background you might want to visit the following bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=338621 --> 
<?xml-stylesheet type="text/xsl" href="/WebObjects/SantaPreview.woa/Contents/WebServerResources/Root.xsl"?> 
<wrapper xmlns="http://www.bbc.co.uk/ContentInterface/Content" xmlns:cont="http://www.bbc.co.uk/ContentInterface/Content" sceneId="T2a_INDEX" serviceName="DSat_T2"> 
    .... 

Firebug montre que le fichier Root.xsl est en cours de chargement, et les en-têtes de réponse pour elle inclure la ligne

Content-Type text/xml 

J'ai aussi essayé avec application/xml comme le type de contenu, mais il ne fait aucune différence :-(

L'extension Web Developer sh La source générée correcte aussi, et si vous enregistrez et chargez la page dans Firefox, elle s'affiche correctement.

La version de Firefox affiche le problème est 3.0.3

Toutes les idées que je pourrais faire mal?

Répondre

5

Afficher seulement les éléments de texte est le comportement que vous sortir d'une feuille de style XSL vide. Pour moi, cela suggère qu'il se passe quelque chose de louche avec vos expressions xpath, et que les attributs xsl: template/@ match ne correspondent pas au document source. Vous ne fournissez pas assez d'informations pour diagnostiquer plus loin, donc cette conjecture aveugle est tout ce que je peux offrir.

EDIT: Il s'est avéré que le problème était que IE et Chrome acceptent silencieusement un ensemble de nœuds comme argument à string-length, tandis que FF3 ne le fait pas. Notez que la spécification impose un argument de chaîne optionnel et ne spécifie pas de comportement avec un argument nodeset.

+0

Je vais jeter un coup d'œil et revérifier. Cependant, IE et Chrome semblent tous deux être en train de se transformer, et l'extension Web Developer de Firefox affiche un code html qui semble valide pour la source générée. Quelle est la précision de la fenêtre source générée? Montre-t-il la source exacte utilisée pour le rendu? –

+0

De même, n'utilisez pas le trait de soulignement dans le nom du fichier XSLT. J'ai eu ceci, et quand j'ai changé pour un nom de fichier sans underscore, cela a bien fonctionné dans Firefox. –

0

essayer de le servir comme application/xml au lieu de text/xml

+0

Cela n'aide pas. –

+0

Parfois, il le fait pour d'autres navigateurs, donc pas une mauvaise idée. –

2

Répondre à ma propre question à la lumière de l'enquête ultérieure. ddaa me conduire dans la bonne direction.

Firefox semble être assez pointilleux avec les conversions xslt. Vérifiez votre xslt pour vous assurer qu'il ne contient pas d'erreurs que IE et Chrome masquent. XML Spy est un bon produit, bien que pas cher, qui mettra en évidence une série d'erreurs dans le xslt. Il semble ramasser au moins autant de problèmes que le moteur de rendu Firefox.

Il semble que vous ne puissiez pas compter sur l'extension Web Developer pour résoudre le problème, malheureusement.

+0

Alors, était-ce vraiment une sorte de problème d'appariement des espaces de noms? – ddaa

+1

Non. J'ai eu un problème de xpath. string-length() sur IE et Chrome ne dérange pas si l'argument est une liste de nœuds, mais XML Spy se plaint qu'il y a "Trop d'éléments" et en changeant l'expression, Firefox revient à la vie. –

+0

Existe-t-il un moyen d'obtenir un message d'erreur de Firefox? J'ai le même problème et XML Spy ne se plaint pas. 8-/ –

2

Je viens d'écrire ici pour la postérité - J'ai eu le même symptôme, aussi Firefox 3.Cependant, dans mon cas, le problème était une autre:

Firefox semble vraiment, vraiment aversion lorsqu'un fichier XSL a un trait de soulignement _ au nom. Mon fichier XSLT s'appelait quelque chose comme my_super_nice_xslt_which_loads_in_opera_and_ie.xsl.

Alors, les gens, n'utilisons pas de traits de soulignement. Utilisez un trait d'union (moins) à la place: my-super-nice-xslt-which-loads-in-opera-and-ie.xsl.

Ensuite, il chargera également dans Firefox. Je pense que je vais utiliser des noms simples avec des lettres et des chiffres à partir de maintenant. Vous connaissez le dicton, "une fois mordu, deux fois timide". (Dans mon cas, j'ai été mordu deux fois, mais il a oublié la première fois, ce qui me fait comme quatre fois timide cette fois-ci.)

3

Si vous utilisez NoScript, qui désactive également jusqu'à ce que vous feuilles de style XSL Allow <site>.

+0

C'était tout pour moi. Je n'aurais jamais deviné que NoScript était en train de désactiver le chargement des feuilles de style XSL, et encore moins le traitement, mais jusqu'à ce que je liste le site en liste blanche, FireFox n'a même pas fait la requête HTTP pour la feuille de style XSL. Une fois que j'ai ajouté le site à la liste blanche, la page a été rechargée automatiquement et elle a demandé et utilisé la feuille de style. – Eddie

+0

Je me sens tellement stupide en ce moment, mais c'était exactement mon problème. Je sais que les commentaires de remerciement sont généralement désapprouvés sur SO, mais merci. –

Questions connexes