2009-11-10 82 views
2

无论出于何种原因,我无法获得XSLTProcessor()的所有时间。Safari中是否支持XSLTProcessor()?

这里是我的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); 

工作正常: 火狐在OSX, iPhone模拟器上OSX, 的Safari OSX

不中在所有的工作: iPhone上的移动Safari, Windows上的Safari浏览器

我错过了什么吗?有没有解决方法XSLTProcessor()?无论如何,服务器端XSLT处理的移动开发速度会更快吗?

回答

2

我敢肯定移动Safari浏览器不支持XSLT,作为底层OS X实现不包括存在于OS X的桌面版本的相关库

服务器端处理肯定是无论如何,移动应用程序的速度更快:您可以合理地从手机转移到服务器的任何处理都是胜利。

6

你的JS代码似乎是正确的。 Safari(以及Safari移动版)具有xslt支持。这只是一个无情的实现。问题是,有时它可能看起来不起作用,仅仅因为它失败时根本没有冗长。

请记住,webkit xsl引擎基于libxsl,因此您可以使用基于此库的任何软件来针对您的文档测试样式表。我个人使用xslproc,就像safari一样失败,但是提供了更多的输出。

如果您无法摆脱问题,只需发布​​xslt和XML文件即可。

+1

这是对已接受答案的更新,意味着新版本支持XSLT? – pauloya 2012-08-03 16:04:22

+1

我不知道老版本的Safari不支持XSLT。我回答是因为我遇到了同样的问题,经过一些调试后,我发现Safari和Mobile Safari(至少iOS5)支持XSLT,但解析器非常严格。不知道这个评论是否回答你的问题。 – 2012-08-06 10:35:37