`
j2eeli
  • 浏览: 45359 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    兼容Firefox的Javascript XSLT 处理XML文件

    本文主要讨论如何在Firefox浏览器中使用JavaScript和XSLT来处理XML文件,以及与IE浏览器的兼容性问题。 一、XSLTProcessor对象 在Firefox浏览器中,可以使用XSLTProcessor对象来执行XSLT转换。XSLTProcessor对象...

    Javascript+Xslt解析Xml为Html的方法.pdf

    总结来说,JavaScript与XSLT结合使用可以实现XML数据的客户端转换,提供了一种灵活的方式在浏览器端处理和展示XML内容。这种方法在不需要服务器端额外处理的情况下,可以提高页面的响应速度和用户体验。然而,需要...

    xslt资料大全(xslt扩展函数)

    xslt手册.chm java实现xslt 简单的 Xalan 扩展函数 - 工程 xslt知识点速查手册.doc 2 Javascript XSLT 处理XML文件(IE and Firefox).doc Saxon 剖析 XSLT 处理器.doc

    xslt-processor:不带本机库依赖项JavaScript XSLT处理器 开发技术 - 其它.zip

    例如,Internet Explorer使用MSXML,而Firefox和Chrome等现代浏览器使用XPath和XSLT的DOM接口。`xslt-processor`项目旨在提供一个统一且独立于平台的解决方案,这对于跨平台和跨浏览器的Web开发至关重要。 这个项目...

    Mozilla Firefox 支持数据岛

    通过研究和优化数据岛的实现,Firefox旨在提供一个与XML数据交互的统一、高效的方式,以便开发者能够编写兼容更多浏览器的代码。 在实现数据岛的过程中,可能涉及到的技术包括: 1. **XMLHttpRequest**:用于异步从...

    AJAX(Asynchronous JavaScript and XML)技术

    - Firefox - Internet Explorer - Opera - Konqueror - Safari 需要注意的是,虽然大部分现代浏览器都支持AJAX所需的技术,但在早期版本或某些特定配置下可能会存在兼容性问题。例如,Opera不支持XSL格式对象和XSLT...

    XML提问时的的的的的的附件

    1. **XSLT不被支持**:如果HTML文件使用了内联XSLT转换XML,Firefox可能需要一个独立的XSLT样式表文件,而不是内联的XSL样式。 2. **MIME类型问题**:XML文件的服务器返回的MIME类型必须是“application/xml”或...

    firefox 浏览器结构分析

    因此,Firefox内置了一个XML解析器,用于处理XML文档和XSLT转换等任务。 ##### 3.8 显示后端(Display Backend) 显示后端是负责图形渲染的部分,根据不同的操作系统平台,Firefox会使用不同的显示后端组件。例如,...

    Mozilla Firefox 支持数据岛(第二版)

    在"Mozilla Firefox 支持数据岛(第二版)"的主题中,我们可以深入探讨Firefox如何实现这一功能,以及它与其他浏览器的差异。 数据岛的核心是通过XML数据源(XMLDataSource)来连接HTML元素和XML文档。XMLDataSource....

    sql+xml+firefox

    标题中的"sql+xml+firefox"表明我们关注的是SQL(结构化查询语言)、XML(可扩展标记语言)以及Firefox浏览器这三者的技术知识。下面将分别详细介绍这三个领域的关键知识点。 **SQL(结构化查询语言)** SQL是用于...

    Gecko DOM Reference(Firefox DOM参考手册)

    5. **XML和XSLT支持**:如果适用,会涵盖Firefox对XML和XSLT的支持。 6. **异步加载和Mutation Observers**:讲解如何处理异步内容加载和检测DOM的变化。 7. **Web Components**:如果Firefox支持,会介绍自定义元素...

    火狐浏览器安装文件-FirefoxSetup_ZH_3.0.8

    Firefox 3.0.8在当时提供了对HTML、CSS、JavaScript、XML以及XSLT等网页语言的良好支持,并且对Web标准的遵循程度较高,这使得网页在火狐上呈现得更加准确和一致。 安全性是Firefox的另一大亮点。它内置了沙盒机制...

    firefox下溢出部分省略号显示

    `test.htm`可能是一个包含上述CSS样式的HTML文件,而`ellipsis.xml`可能与XML格式的数据有关,虽然XML通常不直接用于样式,但它可能包含了要显示的文本数据,这些数据可能会在JavaScript或者XSLT中被处理,然后应用...

    firefox5+firebug1.8+xpath_checker0.4.4

    Firefox 5作为基础浏览器,Firebug 1.8作为强大的调试工具,XPath Checker 0.4.4则专注于XML数据的查询与验证。这三个组件一起,大大提升了开发者在构建和调试网页时的效率和准确性。通过安装压缩包中的Firefox_...

    XML之数据岛

    5. **局限性**:XML数据岛主要是微软IE浏览器支持的功能,对于其他非IE浏览器,如Firefox、Chrome等,可能需要使用其他方法,如JSON,来实现类似的功能。随着现代Web开发标准的发展,XML数据岛的使用已经逐渐减少,...

    ajaxslt脚本库 google ajaxslt

    它解决了在不支持ActiveX控件的浏览器中进行XSLT转换的问题,这通常是Internet Explorer之外的浏览器如Firefox、Chrome、Safari等面临的挑战。 **XSLT基础** XSLT是一种W3C推荐的转换XML文档的语言,它允许开发者...

    sarissa-full-0.9.9.4

    由于JavaScript和XML处理在不同浏览器中的实现可能存在差异,Sarissa库致力于提供一种统一的接口,兼容包括Internet Explorer、Firefox、Chrome、Safari和Opera在内的多种主流浏览器。这意味着开发者可以使用Sarissa...

    <<AJAX 实例大全>>

    AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和...这些浏览器目前包括:Internet Explorer、Mozilla、Firefox、Opera、Konqueror及Mac OS的Safari。但是Opera不支持XSL格式对象,也不支持XSLT[2]。

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    DTD是一种保证XML文档格式正确的有效方法,可以比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或...

Global site tag (gtag.js) - Google Analytics