接收XML数据并使用XSL样式表进行格式化
2007/1/22 12:39:28
阅读全文(1860) | 回复(0) | 编辑 | 精华
[转贴]转自... 今天的一天时间都花费在实现XML数据的接收以及XSL-样式表的格式化,当然这些工作在IE上面都是很容易的事情。可是挪移到FireFox上的时候,一切就没有那么美妙了。:)) 必须实现脚本的跨越浏览器功能。上午吃饭前找到资料,在自己手写还是使用开源框架方面产生了冲突,最终采用在资料的基础上改写,这样的代码量不大。 下面就是封装好的JS函数,只是暂时可以在Firefox,IE上面通用,测试只是小范围而已。这个函数就是为了程序使用,所以就这么写了...... /* xml:可以提供给XML数据的连接或者文件 xsl:样式表或者样式表的连接 div:层-DIV的ID result:xsl文件解析xml的结果写入到div中 */ function showXml( xml, xsl, div ){ if (window.ActiveXObject) { IEXml( xml, xsl, div ); } //Para funcionar no Mozilla/Firefox else if(window.XMLHttpRequest) { FireXml( xml, xsl, div ); }} function IEXml( xml, xsl, div ){ var objeXml; var objeXsl; var objeXml = new ActiveXObject("Microsoft.XMLDOM"); objeXml.async = false; objeXml.load( xml ); var objeXsl = new ActiveXObject("Microsoft.XMLDOM"); objeXsl.async = false; objeXsl.load( xsl ); var theDiv = document.getElementById( div ); theDiv.innerHTML = objeXml.transformNode(objeXsl);} function FireXml( xml, xsl, div ){ var objeXSLTProcessor; var objeXmlDoc; var objeXSLT; var objeXml; var objeXsl; objeXSLTProcessor = new XSLTProcessor(); objeXsl = new XMLHttpRequest(); objeXsl.open("GET", xsl, false); objeXsl.send(null); objeXSLT = objeXsl.responseXML; objeXSLTProcessor.importStylesheet(objeXSLT); objeXml = new XMLHttpRequest(); objeXml.open("GET", xml, true ); objeXml.send(null); objeXmlDoc = (new DOMParser()).parseFromString( objeXml.responseText, "text/xml"); var tvs = objeXSLTProcessor.transformToFragment(objeXmlDoc, document); var theDiv = document.getElementById( div ); div.innerHTML = ""; theDiv.appendChild( tvs );}
Posted by Qr on 2007/1/22 12:39:28
发表评论: |