function XTools() { } XTools.prototype = { 'convert' : function(pString) { if ( typeof pString != 'string' ) return false; if (window.ActiveXObject) { var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = "false"; xmlDoc.loadXML(pString); } else { var parser = new DOMParser(); var xmlDoc = parser.parseFromString(pString, "text/xml"); } return xmlDoc; }, 'load' : function(pFile) { var data = null; if ( document.implementation.createDocument ) data = document.implementation.createDocument("", "", null); else data = new ActiveXObject("Msxml2.FreeThreadedDOMDocument"); data.async = false; data.load( path_im + 'xsl/' + pFile + '?' + Date.parse(new Date)); return data; }, 'parse' : function(pXML, pXSL) { try { switch ( typeof pXML ) { case 'object' : break; case 'string' : if ( pXML.indexOf('<') == 0 ) pXML = this.convert(pXML); else pXML = this.load(pXML); break; default : return {'error':'invalid xml'} } switch ( typeof pXSL ) { case 'object' : break; case 'string' : pXSL = this.load(pXSL); break; default : return {'error':'invalid xsl'} } var fragment = null; if ( window.XSLTProcessor ) { var xslProc = new XSLTProcessor(); xslProc.importStylesheet(pXSL); fragment = xslProc.transformToFragment(pXML, document); // para retornar valor igual ao ie. var aux = document.createElement("div"); aux.appendChild(fragment); fragment = aux.innerHTML; } else { var xslTemplate = new ActiveXObject("MSXML2.XSLTemplate"); xslTemplate.stylesheet = pXSL; var myXslProc = xslTemplate.createProcessor(); myXslProc.input = pXML; myXslProc.transform(); fragment = myXslProc.output; } return fragment; } catch(e) { alert("transform\n\n" + e + "\n\n" + e.description); } }, 'xml' : function() { try { var a = false; if ( document.implementation.createDocument ) a = document.implementation.createDocument("", "", null); else if ( ActiveXObject ) a = new ActiveXObject("Msxml2.DOMDocument"); //with ( a ) // appendChild(createProcessingInstruction("xml", "version='1.0'")); return a; } catch(e) { alert("create\n\n" + e + "\n\n" + e.description); } } };