WEB开发网
开发学院网页设计JavaScript 如何使用 JavaScript XSLT 处理 XML 文件(支持 F... 阅读

如何使用 JavaScript XSLT 处理 XML 文件(支持 Firefox)

 2008-09-01 19:59:18 来源:WEB开发网   
核心提示: 最近使用Firefox进行网页的调试,发现有些javascript XSLT处理xml的语句仅仅支持IE浏览器,而网络中的一些介绍Javascript XSLT 处理XML的文章基本上都是依据Ajax来做的,如何使用 JavaScript XSLT 处理 XML 文件(支持 Firefox), 无奈中,自己写了

   最近使用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!");
}

Tags:如何 使用 JavaScript

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接