0

我在使用 Internet Explorer 9 和 Firefox 13 时遇到了一些问题。我正在使用 HTML、XSL 和 XML 构建 Web 界面,它可以在 Chrome、Opera 和 Safari 上正常运行,无需任何更改,但它不适用于 Firefox 13 和Internet Explorer 9。在 Firefox 中,有些页面(不是全部)无法加载 XML 值,在 Internet Explorer 中,我无法为使用 XSLT 的 html 页面加载 css,但我可以正确加载所有参数。

上面你可以找到一个不起作用的页面示例(HTML、XML、XSL)

HTML

<html>
<head>
<script>
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",dname+"?id="+Math.random(),false);
xhttp.send("");
return xhttp.responseXML;
}

function displayResult()
{
xml=loadXMLDoc("sensorParameters.xml");
xsl=loadXMLDoc("sensorParameters.xsl");
// code for IE
if (window.ActiveXObject)
  {
  ex=xml.transformNode(xsl);
  document.getElementById("example").innerHTML=ex;
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
  {
  xsltProcessor=new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  resultDocument = xsltProcessor.transformToFragment(xml,document);
  document.getElementById("example").appendChild(resultDocument);
  }
}
</script>
</head>
<body onload="displayResult()">
<div id="example" />
</body>
<head>
<meta http-equiv="cache-control" content="no-cache">
</head>
</html>

XSL

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
    <head>
          <title>Interface</title>
          <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body>
    ...
    (It continues, but it is not important...)
    </body>
</html>
</xsl:template>
</xsl:stylesheet>

XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="sensorParameters.xsl"?>
<section1>
<section2>
          ......... some data
</section2>
<section3>
          ......... some data
</section3>
          .........
</section1>

任何帮助将不胜感激。

马可

4

1 回答 1

0

至于 IE 问题,我认为问题的一个可能原因是您使用 XSLT 创建带有html根元素的完整 HTML 文档的方法,head部分包含link样式表,然后尝试将 XSLT 结果包含到div元素中(其中然后 IE 可能会忽略link)。要解决这个问题,您需要更改方法并确保将linkXSLT 创建的元素添加到head您插入 XSLT 转换结果的 HTML 文档中。

于 2012-06-22T11:49:29.480 回答