xsl 和xml transform方法的调用
xsl 和xml生成html,兼容多个浏览器
<html> <head> <meta charset="UTF-8"/> </head> <body id="srcDiv"> </body> <script> var oXSLDoc = loadXMLDoc("./XMLSelTree.xsl"); var oXMLDom = loadXMLDoc("./XMLDoc.xml"); var p_oSrcDiv = document.getElementById("srcDiv"); //var sHtml = oXMLDom.transformNode(m_oConfig.oXSLDoc); var sHtml = xml_transformNode(oXMLDom, oXSLDoc); //将HTML中的'转化为"'" var rep = /'/g; sHtml = sHtml.replace(rep,"'"); p_oSrcDiv.innerHTML = sHtml; function loadXMLDoc(xml_name) { var xmlDoc; try { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); // Support IE } catch(e) { try { // Support Firefox, Mozilla, Opera, etc xmlDoc = document.implementation.createDocument("", "", null) ;// 创建一个空的 XML 文档对象。 } catch(e) { alert(e.message); } } // 加载XML文档 try { xmlDoc.async = false; // 关闭异步加载 xmlDoc.load(xml_name); } catch(e) { // alert(e.message) 如果浏览器是Chrome,则会catch这个异常:Object # (a Document) has no method "load",所以,以下实现支持chrome加载XML文档(只是粗略的写下) var xhr = new XMLHttpRequest(); xhr.open("GET", xml_name, false); xhr.send(null); if (xhr.responseXML) { xmlDoc = xhr.responseXML.documentElement; } else { xmlstr = xhr.response; parser = new DOMParser(); xmlDoc = parser.parseFromString(xmlstr, "text/xml"); } } return xmlDoc; } // 使用XSLT把XML文档转换为一个字符串。 function xml_transformNode(xmlDoc, xslDoc) { console.log("xmlDoc", xmlDoc); console.log("xslDoc", xslDoc); if (null == xmlDoc) return ""; if (null == xslDoc) return ""; if (window.ActiveXObject) // IE { return xmlDoc.transformNode(xslDoc); } else // FireFox, Chrome { //定义XSLTProcesor对象 var xsltProcessor = new XSLTProcessor(); xsltProcessor.importStylesheet(xslDoc); // transformToDocument方法 <!-- var result = xsltProcessor.transformToDocument(xmlDoc); --> // transformToFragment 方法 var result = xsltProcessor.transformToFragment(xmlDoc,document); console.log("result", result); var xmls = new XMLSerializer(); var rt = xmls.serializeToString(result); return rt; } } </script> </html>
transformToDocument API
使用transformToDocument 方法,需要在xsl的文件中,加入outPut的方法才可以
用这个transformToDocument API,需要设置这个outputtype