Javascript 在Internet Explorer中使用XSLT转换XML

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

我需要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 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类型方法?