2009-11-10 110 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