/** * 把XML和XSL组装成HTML * 需要XHConn2对象(XHConn2.js) */ function assembleXML(xmlContent, xslContent){ if (window.ActiveXObject){ return assembleXML_IE(xmlContent, xslContent); }else if(document.implementation && document.implementation.createDocument){ return assembleXML_FF(xmlContent, xslContent); } else { return null; } } function assembleXMLUrl(xmlUrl, xslUrl){ if (window.ActiveXObject){ return assembleXMLUrl_IE(xmlUrl, xslUrl) }else if(document.implementation && document.implementation.createDocument){ return assembleXMLUrl_FF(xmlUrl, xslUrl) } else { return null; } } /** * IE实现 */ function assembleXML_IE(xmlContent, xslContent){ try{ var xml_doc = new ActiveXObject("Microsoft.XMLDOM"); xml_doc.async = false; xml_doc.loadXML(xmlContent); var xsl_doc = new ActiveXObject("Microsoft.XMLDOM"); xsl_doc.async=false; xsl_doc.loadXML(xslContent); var result = xml_doc.transformNode(xsl_doc); return result; } catch(e){ return null; } } function assembleXMLUrl_IE(xmlUrl, xslUrl){ try{ var xml_doc = new ActiveXObject("Microsoft.XMLDOM"); xml_doc.async = false; xml_doc.load(xmlUrl); var xsl_doc = new ActiveXObject("Microsoft.XMLDOM"); xsl_doc.async=false; xsl_doc.load(xslUrl); var result = xml_doc.transformNode(xsl_doc); return result; } catch(e){ return null; } } /** * Firefox/Opera实现 */ function assembleXML_FF(xmlContent, xslContent){ try { // 在Firefox的XML DOM实现中,并没有loadXML()方法,不过通过Firefox中的DOMParser类可以模拟loadXML()的行为 var oParser = new DOMParser(); var xmlDoc = oParser.parseFromString(xmlContent,"text/xml"); var xslDoc = oParser.parseFromString(xslContent,"text/xml"); // 定义XSLTProcessor对象 var xsltProcessor = new XSLTProcessor(); xsltProcessor.importStylesheet(xslDoc); // transformToDocument方式 var result = xsltProcessor.transformToDocument(xmlDoc); var xmls = new XMLSerializer(); var result = xmls.serializeToString(result); return result; } catch(e) { return null; } } function assembleXMLUrl_FF(xmlUrl, xslUrl){ try{ var xmlDoc = document.implementation.createDocument("", "", null); xmlDocasync = false; xmlDoc.load(xmlFile); var xslDoc = document.implementation.createDocument("", "", null); xslDoc.async = false; xslDoc.load(xsltFile); // 定义XSLTProcessor对象 var xsltProcessor = new XSLTProcessor(); xsltProcessor.importStylesheet(xslDoc); // transformToDocument方式 var result = xsltProcessor.transformToDocument(xmlDoc); var xmls = new XMLSerializer(); var result = xmls.serializeToString(result); return result; } catch(e){ return null; } }