如何使用 JavaScript XSLT 处理 XML 文件

开发 后端
本文介绍一个JavaScript XSLT处理XML页面展现的小功能。一共分两个方法,分别使用transformToFragment()以及transformToDocument()。两个方法均可在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!");   
    }   
}   
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.

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!");   
}  
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.

【编辑推荐】

  1. Javascript实现的超强语法高亮引擎
  2. 痛陈Javascript的缺点
  3. JavaOne 2009第三天:微软与Sun/Oracle携手并进
  4. 开发高可移植性J2ME的软件
  5. Java虚拟机(JVM)中的内存设置详解
责任编辑:王观 来源: 动态网站制作指南
相关推荐

2009-04-23 13:19:21

创建XMLXML文件Javascript

2009-07-03 14:40:33

2016-02-25 10:18:29

2009-12-02 14:14:06

PHP DOM-XML

2009-02-26 13:35:10

XMLSAXParserJDOM

2009-06-22 11:52:00

javascriptxml

2009-06-22 14:26:12

ScalaXML对象

2009-02-05 17:28:01

ScalaFriendFeedXML

2009-05-21 09:54:12

XMLXSLTCSS

2022-03-22 09:41:31

Java编程语言持久化

2012-02-08 16:22:26

ibmdw

2012-10-29 11:34:26

IBMdw

2013-06-08 13:29:27

Android开发DOM读取XMLXML解析

2011-06-15 09:02:01

Qt QDomDocume XML

2019-05-30 14:58:56

Pythonxml文件

2017-10-26 08:43:18

JavaScript内存处理

2009-08-19 16:42:41

C#如何使用XML

2009-06-09 21:54:26

传递参数JavaScript

2009-06-22 13:15:00

NetBeans XS

2011-07-20 14:46:59

Cocoa XML 文件
点赞
收藏

51CTO技术栈公众号