您好,欢迎访问一九零五行业门户网

兼容Firefox的Javascript XSLT 处理XML文件_javascript技巧

最近使用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!);
 }
其它类似信息

推荐信息