Это работает в Firefox, но не работает в IE. IE жалуется на строку 18:
docCache.stylesheet = xsl;
Сообщение о том, что:
Message: The stylesheet does not contain a document element. The stylesheet may be empty, or it may not be a well-formed XML document.
Вот функция:
function display(dname, compt) {
document.getElementById(dname+"Table").innerHTML="";
// IE
if (window.ActiveXObject) {
xml = new ActiveXObject("MSXML2.DOMDocument.3.0");
xml.async = false;
xml.load(dname+".xml");
xsl = new ActiveXObject("MSXML2.FreeThreadedDOMDocument.3.0");
xsl.async = false;
xsl.load(dname+".xsl");
docCache = new ActiveXObject("MSXML2.XSLTemplate.3.0");
docCache.stylesheet = xsl;
docProcessor = docCache.createProcessor();
docProcessor.input = xml;
docProcessor.addParameter("competitor", compt);
docProcessor.transform();
document.getElementById(dname+"Table").innerHTML = docProcessor.output;
}
// Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument) {
xml=loadXMLDoc(dname+".xml");
xsl=loadXMLDoc(dname+".xsl");
xsltProcessor=new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
xsltProcessor.setParameter(null, "competitor", compt);
resultDocument = xsltProcessor.transformToFragment(xml,document);
document.getElementById(dname+"Table").appendChild(resultDocument);
}
}
И файл XSL:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:param name="competitor"/>
<xsl:template match="/">
The parameter value was: <xsl:value-of select="$competitor"/>
</xsl:template>
</xsl:stylesheet>
Кто-нибудь знает, почему это происходит?