Javascript 在Internet Explorer中使用XSLT转换XML
我需要JavaScript脚本通过XSLT表解析XML文件到XHTML代码。我有与Firefox、Opera和Safari兼容的代码Javascript 在Internet Explorer中使用XSLT转换XML,javascript,xml,xslt,msxsl,Javascript,Xml,Xslt,Msxsl,我需要JavaScript脚本通过XSLT表解析XML文件到XHTML代码。我有与Firefox、Opera和Safari兼容的代码 function loadXMLFile(path) { var file = document.implementation.createDocument("", "", null); file.async = false; file.load(path); return file; } function parseXMLFi
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的microfot.XMLDOM库,但我不知道如何使用它。如何为IE和可选Chrome编写好的代码?这就是我正在使用的,它是跨浏览器兼容的,如果有任何问题,您也可以访问源代码
这就是我正在使用的,它是跨浏览器兼容的,如果有任何问题,您也可以访问源代码
下面是IE中XSLT转换的示例
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;
我在我的博客中写了一篇关于它的文章,这里是在IE中转换XSLT的例子
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解析XML”。您希望“使用XSLT转换XML”。我建议修改这个问题。旁注:虽然从技术上讲,用XSLT(XSLT是一种图灵完整语言)编写XML解析器是可能的,但您肯定不想去那里。我想要解决方案,我想要从core.Damian编写脚本,您的目标是哪个版本的IE?要从IE 7开始跨浏览器加载XML文档,可以使用XMLHttpRequest,例如
var req=new XMLHttpRequest();请求打开('GET','data.xml',false);请求发送(空);var xml=req.response.xml代码>。这也适用于Chrome。使用Chrome应用XSLT应该与使用Mozilla(即使用新的XSLTProcessor())一样,使用IE时,您可以在得到的responseXML上使用transformNode方法(),这会给您一个XSLT结果字符串,然后您可以使用insertAdjacentHTML插入。Martin,我知道XMLHttpRequest,但我想使用其他对象,例如XSLTProcessor。我不知道这个对象是否与IE和/或Chrome兼容@亚历杭德罗:为什么要从xslt相关问题中删除xsl
或xslt
标记?如果删除这些标签,订阅这些标签的用户将看不到这些问题。您不想“通过XSLT解析XML”。您希望“使用XSLT转换XML”。我建议修改这个问题。旁注:虽然从技术上讲,用XSLT(XSLT是一种图灵完整语言)编写XML解析器是可能的,但您肯定不想去那里。我想要解决方案,我想要从core.Damian编写脚本,您的目标是哪个版本的IE?要从IE 7开始跨浏览器加载XML文档,可以使用XMLHttpRequest,例如var req=new XMLHttpRequest();请求打开('GET','data.xml',false);请求发送(空);var xml=req.response.xml代码>。这也适用于Chrome。使用Chrome应用XSLT应该与使用Mozilla(即使用新的XSLTProcessor())一样,使用IE时,您可以在得到的responseXML上使用transformNode方法(),这会给您一个XSLT结果字符串,然后您可以使用insertAdjacentHTML插入。Martin,我知道XMLHttpRequest,但我想使用其他对象,例如XSLTProcessor。我不知道这个对象是否与IE和/或Chrome兼容@亚历杭德罗:为什么要从xslt相关问题中删除xsl
或xslt
标记?如果删除这些标签,订阅这些标签的用户将看不到这些问题。对于XSL转换的跨浏览器兼容性,框架或库无疑是一个不错的选择。上一次我检查没有太多,另一个值得研究的是Sarissa()。对于XSL转换的跨浏览器兼容性来说,框架或库无疑是一个不错的选择。上一次我检查没有太多,另一个值得研究的是Sarissa(),xslt对象可以只使用Microsoft.XMLDOM吗?如果没有,MSXML2.FreeThreadedDOMDocument是否具有内联的loadFromString类型方法?xslt对象是否可以仅使用Microsoft.XMLDOM?如果没有,MSXML2.FreeThreadedDOMDocument是否具有内联的loadFromString类型方法?