在chrome中访问未转换的xml

时间:2013-01-17 16:55:23

标签: xml google-chrome xslt

我们公司几乎每个服务器都发布了一个标准的xml格式,不用说,相当可怕。我有一个xslt样式表,可以更容易地获取相关信息,但由于许多因素,部署链接在xml中的样式表是不切实际的。我正在使用chrome扩展来在与url模式匹配的任何页面上执行转换。

我的问题是,当您在chrome中加载xml文档时,浏览器会尝试提供帮助并将其转换为漂亮的html格式。我不能应用我的xslt,除非我可以从我的内容脚本访问源xml。我试图从网址中获取原始来源,并且在扩展程序中遇到了权限问题。

我唯一的另一个想法是使用jquery并从他们的html中手动解析,但这看起来有点痛苦,而且我已经有了一个有效的xsl来完成我需要的一切。

有没有更好的方法可以让源xml进行转换?

1 个答案:

答案 0 :(得分:1)

如果无法插入处理指令,可以使用JavaScript触发转换:

function loadXML(fileName,mime) {
  var xmlHttpRequest = new XMLHttpRequest();
  xmlHttpRequest.open("GET",fileName,false);
  if(mime) xmlHttpRequest.overrideMimeType(mime);
  xmlHttpRequest.send("");
  return xmlHttpRequest.responseXML;
}

function transformDocument(url) {
  var xsltProcessor = new XSLTProcessor();
  xsltProcessor.importStylesheet(loadXML('test.xsl','application/xslt+xml'));
  return xsltProcessor.transformToDocument(loadXML(url),document);
}

transformDocument()将返回一个HTML元素,然后您可以显示该元素。我看到了几个选项:

  • 将其放入iframe。
  • 用转换后的文件替换当前文件(例如更换头部和身体)
  • 从转换后的文档中抓取一些div并将其插入当前文档中。
  • 将其作为数据网址打开。
  • ...