2011-03-07 108 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