在Internet Explorer中使用XSLT转换XML
我需要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编写好的代码?
这就是我正在使用的,它是跨浏览器兼容的,你也可以访问源代码,以防万一有任何问题。
您可以随时编辑您的答案。 – 2011-03-07 15:30:09
对于XSL变换的跨浏览器兼容性,框架或库绝对是一个不错的选择。最后,我检查了没有一吨这些,另一个值得研究的是Sarissa(http://dev.abiss.gr/sarissa/) – 2011-03-07 21:16:56
这里是例子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;
我写了一篇关于它的文章在我的博客
xslt对象可以使用Microsoft.XMLDOM吗?如果不是MSXML2.FreeThreadedDOMDocument有一个内联的,loadFromString类型的方法? – 2017-03-24 22:41:10
你不想 “通过XSLT解析XML”。您想“使用XSLT转换XML”。我建议适应这个问题。注意:尽管在XSLT中编写XML解析器在技术上是可行的(XSLT是一种图灵完备语言),但您绝对不想去那里。 – ndim 2011-03-07 15:23:01
我想要解决方案,我想从核心编写脚本。 – 2011-03-07 16:40:16
达米安,你瞄准哪个版本的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