我在使用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>
任何帮助将不胜感激。
马
答案 0 :(得分:0)
至于IE问题,我认为问题的一个可能原因是您使用XSLT创建包含html
根元素head
部分link
的完整HTML文档的方法到样式表,然后尝试将XSLT结果包含到div
元素中(其中IE可能忽略link
)。要解决此问题,您需要更改方法,并确保将XSLT创建的link
元素添加到HTML文档的head
,并将XSLT转换结果插入到该文档中。