2010-11-12 9 views
0

J'ai récemment joué avec le formatage XML et les fichiers XLST, car il semble que ce soit la solution la plus directe à un problème d'IU auquel j'ai dû faire face, impliquant des utilisateurs accédant différemment aux données centrales. Dans mes expérimentations, j'ai créé une très belle feuille de mise en forme qui a l'air bien ... dans Internet Explorer. Lorsque je le teste dans Firefox, je reçois systématiquement le même message d'erreur:Pourquoi Firefox n'analyse-t-il pas ce XSLT?

"Erreur lors du chargement de la feuille de style: l'analyse d'une feuille de style XSLT a échoué."

J'ai essayé d'assembler la feuille de style en un document très basique et de toujours rencontrer le même problème. J'ai vérifié des tutoriels et d'autres webforums et des exemples d'imitation, mais je n'arrive pas à trouver quelque chose qui soit explicitement applicable.

Voici mon fichier XML de test:

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="fox.xslt"?> 
<article> 
    <title>Making Excellent Pasta Sauce</title> 
    <synopsis>A simple recipe for an amazing sauce, with tips on getting that extra flavor.</synopsis> 
    <content>Here is my content.</content> 
    <tags> 
     <tag>sauce</tag> 
     <tag>recipes</tag> 
    </tags> 
</article> 

Et puis, voici mon fichier XSLT (nom, comme vous pouvez dire du bloc exemple ci-dessus, "fox.xslt"

<?xml version="1.0" ?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> 
<xsl:template match="/"> 
<html> 
    <head> 
    </head> 
    <body> 
    <xsl:for-each select="article"> 
     TITLE: <xsl:value-of select="title"/> <BR/> 
     SYNOPSIS: <xsl:value-of select="synopsis"/> <BR/><BR/> 
    </xsl:for-each> 
</body> 
</html> 
</xsl:template> 
</xsl:stylesheet> 

. Je soupçonne que cela peut avoir quelque chose à voir avec <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> parce que j'ai vu quelques choses différentes faites avec ceci dans des exemples, j'ai essayé quelques-unes des différentes valeurs ici et je n'ai pas l'air d'en trouver une qui fonctionne avec cette exemple:

Je suis sûr que c'est probablement un problème de base, j'ai juste été bouleversé à traquer. J'espère que quelqu'un peut me conduire au "moment de claquement du front".

Merci d'avance!

Répondre

3

Essayez de remplacer votre stylesheet avec ceci:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

Vous pouvez également ajouter ceci:

xmlns="http://www.w3.org/1999/xhtml" 
+0

Je devrais dire que cela fonctionne avec 'version =" 1.0 "' (ou 1.1) aussi. Le problème principal est probablement l'espace de noms 'xsl'. – Bruno

+0

Le problème ** est ** l'espace de noms XSLT. Mais votre réponse a manqué l'explication. Cet URI d'espace de nommage 'http: // www.w3.org/TR/WD-xsl' a été utilisé par les anciens produits M $ implémentant une ancienne version de travail XSLT. Plus tard, cela a été déprécié. Aucun ne se plaint du processeur XSLT aujourd'hui permet cet espace de noms. –

+0

@Alejandro, oui en effet, mais je viens de tester sur Firefox 3.6 et si l'attribut 'version' est manquant, ça ne marche pas non plus (donc les deux problèmes doivent être corrigés). – Bruno

2

Je trouve très utile d'utiliser un outil distinct pour trouver les problèmes FireFox (et al) ne rapportera pas. Installez et utilisez, disons, la commande xsltproc, qui donne des résultats beaucoup plus utiles. Par exemple, j'ai rencontré un fichier où la seule réponse de Firefox était (faites votre choix): «Échec de l'analyse d'une feuille de style XSLT» ou, avec version = 1.1 dans la feuille de style, «l'inutile» analyse une expression XSLT. "

alors, je suis allé à la ligne de commande et est entré, dire ..." xsltproc bah.xsl humbug.xml » puis, presto, il était:

error 
xsltCompileStepPattern : ']' expected 
compilation error: file bah.xsl line 157 element template 
xsltCompilePattern : failed to compile 'ATOM[@STATE='GAS'' 

Je suis donc régulièrement exécuter tous mes fichiers XML et XSL à travers xsltproc ou son équivalent qu'ils «courent propre» avant de le nourrir à mon navigateur de voisinage amical. Je n'ai pas encore trouvé un navigateur qui "gracieusement et informatiquement" gère un problème XSLT.

De plus, je trouve très-franchement plus facile à regarder la sortie de commande (qui est HTML), par exemple par la tuyauterie à la moins ou plus commandes pour la pagination, que d'essayer de regarder dans un navigateur, jusqu'à ce que je sache que je suis très proche de ce que je cherche. Si j'essaie de trouver un problème dans la sortie HTML (disons) générée, je ne veux vraiment pas la regarder "en HTML" au début. Si les transformations XSL sont "crachant des bêtises" (comme, bien sûr, ils font d'abord, au moins pour moi), les tentatives d'un navigateur pour le transformer en quelque chose de beau ne permet pas de trouver les bugs dans la feuille de style.