2011-03-07 105 views
0

我需要JavaScript腳本來將XML文件通過XSLT表解析爲XHTML代碼。我的代碼與Firefox,Opera和Safari兼容。在Internet Explorer中使用XSLT轉換XML

function loadXMLFile(path) { 
    var file = document.implementation.createDocument("", "", null); 
    file.async = false; 
    file.load(path); 
    return file; 
    } 
    function parseXMLFile() { 
    var xml = loadXMLFile("data.xml"); 
    var xsl = loadXMLFile("data.xsl"); 
    var xslt = new XSLTProcessor(); 
    xslt.importStylesheet(xsl); 
    var xhtml = xslt.transformToFragment(xml, document); 
    document.firstChild.replaceChild(xhtml, document.firstChild); 
    } 
    parseXMLFile(); 

這是Internet Explorer和Chrome的無效代碼。我知道IE的Microsfot.XMLDOM庫,但我不知道如何使用它。如何爲IE和可選Chrome編寫好的代碼?

+1

你不想 「通過XSLT解析XML」。您想「使用XSLT轉換XML」。我建議適應這個問題。注意:儘管在XSLT中編寫XML解析器在技術上是可行的(XSLT是一種圖靈完備語言),但您絕對不想去那裏。 – ndim 2011-03-07 15:23:01

+0

我想要解決方案,我想從核心編寫腳本。 – 2011-03-07 16:40:16

+0

達米安,你瞄準哪個版本的IE?要在IE 7以後跨瀏覽器加載XML文檔,您可以使用XMLHttpRequest例如'var req = new XMLHttpRequest(); req.open('GET','data.xml',false); req.send(NULL); var xml = req.response.XML;'。這應該也適用於Chrome。對Chrome應用XSLT應該像Mozilla一樣工作(即使用新的XSLTProcessor()),使用IE,您可以使用transformNode方法(http://msdn.microsoft.com/zh-cn/library/ms761399%28v=VS.85 %29.aspx),你可以得到一串XSLT結果,然後你可以用insertAdjacentHTML插入。 – 2011-03-07 17:22:28

回答

0

這就是我正在使用的,它是跨瀏覽器兼容的,你也可以訪問源代碼,以防萬一有任何問題。

http://johannburkard.de/software/xsltjs/

+0

您可以隨時編輯您的答案。 – 2011-03-07 15:30:09

+0

對於XSL變換的跨瀏覽器兼容性,框架或庫絕對是一個不錯的選擇。最後,我檢查了沒有一噸這些,另一個值得研究的是Sarissa(http://dev.abiss.gr/sarissa/) – 2011-03-07 21:16:56

3

這裏是例子XSLT改造的IE

var xml = new ActiveXObject("Microsoft.XMLDOM"); 
var xslt = new ActiveXObject("MSXML2.FreeThreadedDOMDocument"); 
xml.load("data.xml"); 
xslt.load("data.xls"); 

var processor = new ActiveXObject("Msxml2.XSLTemplate"); 
processor.stylesheet = xslt; 

var objXSLTProc = processor.createProcessor(); 
objXSLTProc.input = xml; 
objXSLTProc.transform(); 
var output = objXSLTProc.output; 

我寫了一篇關於它的文章在我的博客

+0

xslt對象可以使用Microsoft.XMLDOM嗎?如果不是MSXML2.FreeThreadedDOMDocument有一個內聯的,loadFromString類型的方法? – 2017-03-24 22:41:10