兼容Firefox的Javascript XSLT 处理XML文件
最近使用Firefox进行网页的调试,发现有些JavascriptXSLT处理XML的语句仅仅支持IE浏览器。而网络中的一些介绍javascriptXSLT处理XML的文章基本上都是依据AJAX来做的。
无奈中,自己写了一个JavascriptXSLT处理XML展现页面的小功能。现在帖出来和大家共享,希望大家给点改进意见。
在Firefox中使用XSLTProcessor对象处理XML,主要使用该对象的两个方法:
一、transformToFragment()。
二、transformToDocument()。
下面的代码仅仅使用transformToFragment()方法来实现对XML文件处理,如果你对在Firefox中使用JavascriptXSLT处理XML文件感兴趣的话不妨试着将以下代码改写成使用transformToDocument()方法来实现的处理功能。
Javascript代码如下:
functioninitialize(){ varxmlDoc; varxslDoc;
//判断浏览器的类型 if(document.implementation&&document.implementation.createDocument) { //支持Mozilla浏览器 try { xmlDoc=document.implementation.createDocument("","",null); xmlDoc.async=false; xmlDoc.load("guestbook/guestbook.xml"); } catch(e) { alert("error:001"); } try { xslDoc=document.implementation.createDocument("","",null); xslDoc.async=false; xslDoc.load("guestbook/guestbook.xsl"); } catch(e) { alert("error:002"); } try { //定义XSLTProcessor对象 varxsltProcessor=newXSLTProcessor(); xsltProcessor.importStylesheet(xslDoc); varoResultFragment=xsltProcessor.transformToFragment(xmlDoc,document); //将解析过的文本输出到页面 varoDiv=document.getElementById("guestbookPanel"); oDiv.appendChild(oResultFragment); } catch(e) { alert("error:003"); } } elseif(typeofwindow.ActiveXObject!='undefined') { //varxmlDoc=Server.CreateObject("Msxml2.DOMDocument.4.0"); //支持IE浏览器 xmlDoc=newActiveXObject('Microsoft.XMLDOM'); xslDoc=newActiveXObject('Microsoft.XMLDOM'); xmlDoc.async=false; xslDoc.async=false; xmlDoc.load("guestbook/guestbook.xml"); xslDoc.load("guestbook/guestbook.xsl"); guestbookPanel.innerHTML=xmlDoc.documentElement.transformNode(xslDoc); } else { alert("Browserunknown!"); } }