googlechrome中的javascript-XSL
我使用以下javascript代码来显示xml/xsl:googlechrome中的javascript-XSL,javascript,xslt,google-chrome,Javascript,Xslt,Google Chrome,我使用以下javascript代码来显示xml/xsl: function loadXMLDoc(fname) { var xmlDoc; // code for IE if (window.ActiveXObject) { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } // code for Mozilla, Firefox, Opera, etc. else if (document.implementat
function loadXMLDoc(fname)
{
var xmlDoc;
// code for IE
if (window.ActiveXObject)
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation
&& document.implementation.createDocument)
{
xmlDoc=document.implementation.createDocument("","",null);
}
else
{
alert('Your browser cannot handle this script');
}
try {
xmlDoc.async=false;
xmlDoc.load(fname);
return(xmlDoc);
}
catch(e)
{
try //Google Chrome
{
var xmlhttp = new window.XMLHttpRequest();
xmlhttp.open("GET",file,false);
xmlhttp.send(null);
xmlDoc = xmlhttp.responseXML.documentElement;
return(xmlDoc);
}
catch(e)
{
error=e.message;
}
}
}
function displayResult()
{
xml=loadXMLDoc("report.xml");
xsl=loadXMLDoc("report.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);
}
}
它适用于IE和Firefox,但chrome在以下方面失败:
document.getElementById("example").appendChild(resultDocument);
感谢您的帮助谷歌浏览器目前对XSL的支持有限。如果XSL引用任何外部资源(
document()
函数、XSL:import
、XSL:include
或外部实体),XSL将运行,但结果将为空或无效
如果这不是问题的原因,则问题可能不同:resultDocument
和document
不共享同一根。尝试使用或类似的技术。如果失败,并且您确定resultDocument具有有效内容,请将其转换为字符串,手动添加节点,并将新节点的innerHTML
设置为字符串。我知道,这很难看,但在Chrome成熟之前,我们需要一些变通办法……我发现Chrome(至少对于tr和td标记而言)需要格式良好的html。例如,您不能从tr开始-它必须在tbody(或thead)中,但您也不能从那里开始,它必须放在表标记中。。。(我认为xslt引擎不会原谅html规则——即使您试图形成一个片段。)
所以,如果您想从xslt中得到一个表,请完成整个工作,而不是一部分。请这样做:
<table><tbody><tr><td></td></tr></tbody></table>
不是这个:
<tbody><tr><td></td></tr></tbody>
或者这个:
<tr><td></td></tr>
或者根据我的经验,tr标签丢失了,看起来像是很多文本