Javascript XSLT 处理XML文件(支持FF和IE)

最近使用Firefox进行网页的调试,发现有些Javascript XSLT处理XML的语句仅仅支持IE浏览器。而网络中的一些介绍javascript XSLT 处理XML的文章基本上都是依据AJAX来做的。
     无奈中,自己写了一个Javascript XSLT处理XML展现页面的小功能。现在帖出来和大家共享,希望大家给点改进意见。
     在Firefox中使用XSLTProcessor对象处理XML,主要使用该对象的两个方法:
一、transformToFragment()。
二、transformToDocument()。
     下面的代码仅仅使用transformToFragment()方法来实现对XML文件处理,如果你对在Firefox中使用Javascript XSLT 处理XML文件感兴趣的话不妨试着将以下代码改写成使用transformToDocument()方法来实现的处理功能。
Javascript 代码如下:

function initialize() {
     var xmlDoc;
     var xslDoc;

     // 判断浏览器的类型
     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对象    
             var xsltProcessor = new XSLTProcessor();
             xsltProcessor.importStylesheet(xslDoc);
             var oResultFragment = xsltProcessor.transformToFragment(xmlDoc,document);
             // 将解析过的文本输出到页面
             var oDiv = document.getElementById("guestbookPanel");
             oDiv.appendChild(oResultFragment);
         }
         catch(e)
         {
             alert("error:003");
         }    
     }
     else if(typeof window.ActiveXObject != 'undefined')
     {        
         //var xmlDoc=Server.CreateObject("Msxml2.DOMDocument.4.0");        
         // 支持IE浏览器
         xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
         xslDoc = new ActiveXObject('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("Browser unknown!");
     }
}

javascript dom 处理XSL显示数据的第二种方式。

主要代码如下:

var xmlDoc;
var xslDoc;

// 判断浏览器的类型
if(document.implementation && document.implementation.createDocument)
{  
   // 支持Mozilla浏览器
   try
   {
    xmlDoc = document.implementation.createDocument("", "", null);
    xmlDoc.async = false;
    xmlDoc.load("guestbook/guestbook.xml");

    xslDoc = document.implementation.createDocument("", "", null);
    xslDoc.async = false;  
      xslDoc.load("guestbook/guestbook.xsl");     
   
      // 定义XSLTProcessor对象
    var xsltProcessor = new XSLTProcessor();
    xsltProcessor.importStylesheet(xslDoc);
     // transformToDocument方式
     var result = xsltProcessor.transformToDocument(xmlDoc);
     var xmls = new XMLSerializer();
     document.getElementById("guestbookPanel").innerHTML = xmls.serializeToString(result);
   
   }
   catch(e)
   {
    alert("Unable to do xml/xsl processing");
   }
}
else if(typeof window.ActiveXObject != 'undefined')
{
   try
   {
    // 支持IE浏览器
    xmlDoc = new ActiveXObject('Msxml2.DOMDocument');
    xslDoc = new ActiveXObject('Msxml2.DOMDocument');
    xmlDoc.async = false;
    xslDoc.async = false;  
    xmlDoc.load("guestbook/guestbook.xml");
      xslDoc.load("guestbook/guestbook.xsl");
    guestbookPanel.innerHTML = xmlDoc.documentElement.transformNode(xslDoc);
   }
   catch(e)
   {
    alert("Unable to do xml/xsl processing");
   }
}
else
{
   alert("Browser unknown!");
}

转自:http://hi.baidu.com/boy2143/blog/item/692cfaf306696556342acc46.html

真的非常感谢原作者

原文地址:https://www.cnblogs.com/lys_013/p/2558127.html