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中的&apos;转化为"'"
	var rep = /&apos;/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 

transformToDocument API

 
 
posted @ 2018-08-17 09:12  FeelRose  阅读(411)  评论(0编辑  收藏  举报