if (document.implementation.createDocument) {
Document.prototype.loadXML = function(strXml) {
var domParser = new DOMParser();
var domDoc = domParser.parseFromString(strXml,"text/xml");
while (this.hasChildNodes()) this.removeChild(this.lastChild);
for (var i = 0; i < domDoc.childNodes.length; i++) {
this.appendChild(this.importNode(domDoc.childNodes[i], true));
}
};
Document.prototype.__defineGetter__("xml", function () {
return (new XMLSerializer()).serializeToString(this);
});
}
function doXsltTransform(strXml, strXslt) {
var strRet= "";
var __nonMSDOMBrowser = (window.navigator.appName.toLowerCase().indexOf('explorer') == -1);
if (__nonMSDOMBrowser) { //for non-IE browsers, e.g., mozilla, netscape.
if(document.implementation && document.implementation.createDocument) {
var processor = new XSLTProcessor();
var xslt = document.implementation.createDocument("", "", null);
xslt.async = false;
if (strXslt.indexOf("</")>-1)
xslt.loadXML(strXslt);
else
xslt.load(strXslt);
processor.importStylesheet(xslt);
var src_doc = document.implementation.createDocument("","", null);
src_doc.async = false;
if (strXml.indexOf("</")>-1)
src_doc.loadXML(strXml);
else
src_doc.load(strXml);
var result = processor.transformToDocument(src_doc);
var xmls = new XMLSerializer();
strRet = xmls.serializeToString(result);
}
else
strRet= "Browser does not support this feature";
}
else {
// Load XML
var xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false;
if (strXml.indexOf("</")>-1)
xml.loadXML(strXml);
else
xml.load(strXml);
// Load XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM");
xsl.async = false;
if (strXslt.indexOf("</")>-1)
xsl.loadXML(strXslt);
else
xsl.load(strXslt);
// Transform
strRet= xml.transformNode(xsl);
}
return (strRet);
}