2009-11-10 4 views
2

Pour une raison quelconque, je ne peux pas obtenir XSLTProcessor() de travailler tout le temps.Aucune prise en charge de XSLTProcessor() dans Safari?

Voici mon JS:

... xsltProcessor = new XSLTProcessor(); 
xsltProcessor.importStylesheet(xmlRequest.responseXML); 
// Pass variables 
xsltProcessor.setParameter(null, "sectionNumber", section); 
xsltProcessor.setParameter(null, "entryNumber", elementNo); 

// Transform XML using XSL 
var resultDocument = xsltProcessor.transformToFragment(phonebookDump,document); 
// Append to document 
document.getElementById('three').appendChild(resultDocument); 

fonctionne très bien dans: Firefox sur Mac OS X, iPhone Simulator sur Mac OS X, Safari sur Mac OS X

ne fonctionne pas du tout dans : Mobile Safari sur iPhone, Safari sur Windows

Ai-je oublié quelque chose? Y a-t-il une solution de contournement à XSLTProcessor()? Le traitement XSLT côté serveur serait-il plus rapide pour le développement mobile?

Répondre

2

Je suis sûr que Safari Mobile ne prend pas en charge XSLT, comme la mise en œuvre OS X sous-jacent ne comprend pas les bibliothèques pertinentes qui sont présentes dans les versions de bureau de Mac OS X.

traitement côté serveur serait certainement plus rapide pour une application mobile de toute façon: tout traitement que vous pouvez raisonnablement passer du téléphone au serveur est une victoire.

6

Votre code JS semble correct. Safari (et Safari Mobile) a également le support xslt. C'est juste une implémentation impitoyable. Le problème est que, parfois, il peut sembler que cela ne fonctionne pas simplement parce qu'il n'est pas verbeux quand il échoue. Rappelez-vous que le moteur webkit xsl est basé sur libxsl, donc vous pouvez utiliser n'importe quel logiciel basé sur cette bibliothèque pour tester votre feuille de style par rapport à votre document. J'utilise personnellement xslproc qui échoue juste comme safari, mais donne beaucoup plus de sortie.

Si vous ne parvenez pas à résoudre le problème, publiez simplement les fichiers xslt et XML.

+1

S'agit-il d'une mise à jour de la réponse acceptée, ce qui signifie que les versions plus récentes prennent en charge XSLT? – pauloya

+1

Je ne sais pas si les anciennes versions de Safari ne supportaient pas XSLT. J'ai répondu parce que j'avais le même problème et après un débogage, j'ai remarqué que Safari et Mobile Safari (au moins pour iOS5) avaient un support pour XSLT, mais l'analyseur est TRÈS strict. Je ne sais pas si ce commentaire répond à votre question. –