`

XSLT 介绍与 Google Ajaxslt

 
阅读更多
http://bright895.blog.163.com/blog/static/182699233201142685114192/

最近研究ajaxslt的心得 http://bright895.blog.163.com/blog/static/182699233201142685114192/

XSLT的英文标准名称为eXtensible Stylesheet Language Transformation。根据W3C的规范说明书(http://www.w3.org/TR/xslt),最早设计XSLT的用意是帮助XML文档(document)转换为其它文档。但是随着发展,XSLT已不仅仅用于将XML转换为HTML或其它文本格式,更全面的定义应该是:XSLT是一种用来转换XML文档结构的语言。
            为了使数据便于人们的阅读理解,我们需要将信息显示出来或者打印出来,例如将数据变成一个HTML文件,一个PDF文件,甚至是一段声音;同样,为了使数据适合不同的应用程序,我们必须有能够将一种数据格式转换为另一种数据格式,比如需求格式可能是一个文本文件,一个SQL语句,一个HTTP信息,一定顺序的数据调用等。而XSLT就是我们用来实现这种转换功能的语言。将XML转换为HTML,是目前XSLT最主要的功能

1.XSLT stylesheets can automate the conversion of the same input into multiple output formats.

2.XSLT一个很大的优势就是可以在任何地方随时在XML数据全局范围内抓取需要的任何数据,不受XML数据结构影响。

3.将数据和表达形式分离。就象天气预报的信息可以显示在不同的设备上,电视,手机或者其它。这样给你一个XML,一个DTD,就可以开发XSLT,而不用关心后台数据如何实现。比如如果有一天突然觉得要换界面了,那么重新做一个xsl就好了,后台的程序和xml的结构完全不需要修改,如果你用传统的方法,由于数据和显示耦合的太紧密,所有的页面都将重写...

4.將XSLT轉化在客戶端進行可以大大減少服務器壓力,服務器只需要將XML數據發送到客戶端,XSLT已經保存在本地,從而减小网络流量.

5.可以很好的避免安全性問題,以XSLT转化得到的页面通过查看源代码得到的只有XML数据。

6.能够很好的适应需求的快速变化,不用修改逻辑代码,不用编译,甚至可以直接在线修改,就可以解决比较一般的需求变化。

7.另外,是因为它专门用来处理xml,它处理xml比DOM方便多了,对于目前盛行的Ajax应用来说,尤其有其发挥空间,比较典型的可以参考AJAXSLT
ajaxslt 是一个针对Ajax在取得XML资料格式后,利用Javascript动态加入XSL-T(XML Stylesheet Language - Transformation)与及XPath的运用所开发的一套元件。一般上,XMLHttpRequest在传回XML字串后,我们必须花另一个功夫将这些XML数据转换成能够显示的用户界面,这是非常繁琐的工作,而且程序码的重用是一个恶梦。不过,通过ajaxslt,我们可以利用XSLT模版对 XML文件进行处理,然后输出一个用户界面,当然我们不必了解ajaxslt是怎样处理XML和XSLT的,只要熟悉XSLT和XPath的原理就可以很轻松地处理XML文件了。详细请看:http://nixeon.blogspot.com/2006/01/google-ajaxslt.html

8.一个xslt可以生成N种版面布局,但html就只能通过script来实现.

2.語法學習需要時間,大部分程序員可以對它比較陌生;但是語法非常直觀,只要稍微投入,就可以輕鬆入門.

3.xslt格式检查严谨,这在coding阶段也许稍微麻烦一点,但在应用和维护阶段非常有好处.

XSL是参考SGML中的DSSSL(用来设置SGML的表现样式)而设计的。最初设计XSL的目的就是采用XML格式提供一种为XML文档设置表现样式的新方法。虽然也可以使用CSS来为XML文档设置表现样式(而且CSS还是非常成熟的一套规范,拥有大量的优点),但是CSS所采用的是与XML不同的一套语法,无法使用相同的XML解析器来进行处理,这为开发带来了额外的负担。后来W3C发现制定XSL规范的工作量实在太大,就将整个工作分成了两个部分:XSLT(T代表Transform)和XSL-FO(FO代表Formatting Objects)。XSLT主要是面向转换类应用,很快(1999年内)就作为正式规范推出了,参见 W3C XSLT 1.0规范;XSL-FO主要是面向精确的表现样式定义(例如生成PDF),在 W3C XSL 1.0规范中描述。所以,XSL=XSLT+XSL-FO。

        XSLT虽然名字中也有Stylesheet,但是它其实不是为设置文档的表现样式的目的而设计的,用来替代CSS的是XSL-FO。然而XSL-FO目前还没有浏览器能够支持(其复杂性造成了其可能很多年以后才会被应用在浏览器之中,这是“委员会驱动”设计方法的通病),所以我们在这里就不讨论了。 XSLT的主要作用是将XML由一种格式转换为另一种格式,例如:由XML的一种词汇表转换为另一种词汇表;或者由XML转换为HTML或者XHTML,便于在浏览器中显示。后面一种应用(XML->HTML/XHTML)是目前XSLT应用最为广泛的领域,被应用在一些J2EE表现层框架中(例如,Cocoon是一个典型的代表。其他的J2EE表现层框架也可以通过集成Jakarta Taglibs来实现类似的功能)。这些框架在服务器端做XSLT转换,将生成的HTML/XHTML发送给浏览器。基于这种技术的框架可以非常方便地支持各种瘦客户端,例如:具有无线上网功能的PDA或WAP手机(这时候是XML->WML,也就是由XML的一种词汇表转换为另一种词汇表,WML 本身也是XML的一种词汇表),无非就是另外再写一套XSLT转换规则。有一些需要定期生成静态页面的网站也在服务器端采用XML+XSLT来定期生成静态页面(这类进程一般是以后台方式来运行的)。

        在IE 5.0中就可以支持XSLT了,不过当时采用的不是XSLT的正式规范,而是这个规范的一个草案(namespace为http://www.w3.org/TR/WD-xsl)。IE 6.0支持XSLT的正式规范(namespace为http://www.w3.org/1999/XSL/Transform)。 Mozilla也在2001年就可以支持XSLT了。既然IE和基于Mozilla的浏览器(Mozilla Suite、Firefox、Netscape、etc.)都可以很好地支持XSLT,这就引起了一种思考,究竟是在服务器端做XSLT转换好还是在浏览器端做XSLT转换好呢?我的考虑是尽管在服务器端做XSLT转换更加灵活,功能更加强大,我却更愿意在浏览器端做转换。因为XSLT转换是非常耗费资源(内存、CPU)的操作,如果在服务器端做大量的转换操作必然会极大地影响服务器的性能(设想有100个并发连接,同时在服务器端做100个XSLT转换的情况)。必须要在服务器端做转换的更好的方案是以后台方式定期生成静态的HTML页面(一些新闻网站就是这样做的);或者在服务器端通过软件实现某种缓存机制,而不必重复做相同的转换。这也符合我们的一贯思路:浏览器其实能做很多事情,而且现在主流PC机型(P4 2G、256M 以上内存)的处理能力已经非常强了,所以在浏览器力所能及的情况下应该将尽量多的工作交给浏览器去做。
然而,目前除了IE与基于Mozilla的浏览器之外,其他的浏览器(例如Opera和Safari)目前仍然还不支持在浏览器端做XSLT转换,因此如果计划支持这些浏览器,必须要提供在服务器端做XSLT转换的对应功能,使得应用在这些浏览器上也能正常运行。

        XSLT目前已经达到了实用的阶段并且被广泛采用。我们做Ajax开发有的时候也会用到XSLT。Google Maps的那个可爱的弹出式小气球就是使用客户端的XSLT(至少在IE和Firefox上是这样做的)来生成的。在《Ajax实战》(Ajax in Action中文版)第12章:使用XSLT的动态搜索,也通过一个完整的实例演示了客户端XSLT的威力。使用XSLT的好处是可以将很多界面生成的工作自动化,减少错误的发生。当然XSLT也有一定的复杂性,需要花一些时间来学习,带来了额外的学习成本,因此需要在做设计之前做一些权衡。在适当的场合使用XSLT,无疑会成为Ajax开发者的一件利器。

虽然XSLT在IE与基于Mozilla的浏览器中都可以支持XSLT,然而它们的调用语法差别很大,这又为我们带来了头疼的跨浏览器不兼容问题。不必担心,解决之道就是使用一些成熟的跨浏览器库,例如 Sarissa。Google支持的一个开源项目 Google AjaxSLT,代码基于Google的工作,用来执行XSLT转换,以及XPath查询.

html/jsp/php时必须按页面顺序写的(除非用script对innerhtml处理可以例外)
xslt完全不需要按顺序,把全站广告都放在一起,全站菜单放在一起,这是充分利用xsl:template的结果.


缺點:
1.兼容性問題: 部分瀏覽器不支持XSLT,不過解決方案可以將解析放在服務器端執行;

Google Ajaxslt简介
     ajaxslt是Google的一项开源项目,也是Google本身在Gmail, Google Maps, Google Suggest等Ajax应用程序的XML/XSLT/XPath处理元件。ajaxslt的功能很强,不过坏消息是,目前由于Google并没有对用户提供ajaxslt的说明书,所以新用户在探索ajaxslt的使用方法时是非常吃力不讨好的。

ajaxslt是一个针对Ajax在取得XML资料格式后,利用Javascript动态加入XSL-T(XML Stylesheet Language - Transformation)与及XPath的运用所开发的一套元件。一般上,XMLHttpRequest在传回XML字串后,我们必须花另一个功夫将这些XML数据转换成能够显示的用户界面,这是非常繁琐的工作,而且程序码的重用是一个恶梦。不过,通过ajaxslt,我们可以利用XSLT模版对XML文件进行处理,然后输出一个用户界面,当然我们不必了解ajaxslt是怎样处理XML和XSLT的,只要熟悉XSLT和XPath的原理就可以很轻松地处理XML文件了。

基于Google Maps的工作,Google AJAXSLT是使用XPath的XSL转换(XSLT)的JavaScript实现。XSLT可以把XML文档转换为其他语言,如HTML。AJAXSLT允许使用JavaScript在浏览器上直接完成这些转换。
Google AJAXSLT在所有主要浏览器上都能工作,它是在BSD许可证下发布的。这个工具包很小,包括几个JavaScript文件,还有一些方便的测试页。 Google AJAXSLT不是十全十美的,不过,如果Google Suggest有所提示,我们希望Google AJAXSLT的缺点能很快解决。因为Google是最先使用Ajax的网站之一,我们会很有兴致地看到在未来几个月它还会有所增加。更多有关的信息请访问goog-ajaxslt.sourceforge.net。
开发语言: JavaScript
操作系统: 跨平台
软件主页: http://code.google.com/p/google-axsjax/
文档地址:
下载地址: http://sourceforge.net/project/platformdownload.php?group_id=140999


使用Ajaxslt

先去下载google ajaxslt的源码包

1、用xmlhttprequest从服务器获得xml数据放于id="xml"的div中

也可以从各种封装的xmlhttprequest框架中直接获得xml,这种方式更好一些

2、对应xsl放置于id="xslt"的div中

3、通过Ajaxslt组合成html,结果将显示于id="htmldisplay"的div中

加载如下js

<script src="../misc.js" type="text/javascript"></script>
<script src="../dom.js" type="text/javascript"></script>
<script src="../xpath.js" type="text/javascript"></script>
<script src="../xslt.js" type="text/javascript"></script>

然后

var xml = xmlParse(el('xml').value);  
var xslt = xmlParse(el('xslt').value);  
var html = xsltProcess(xml, xslt);  
document.getElementById('html').value = html;  
document.getElementById('htmldisplay').innerHTML = html;


很简单就完成了xml到html的转化,而xpath/xsl的强大功能使得我们可以非常更方面的处理xml数据


备注:

misc.js:一些常量定义和 helper 函数,还有 log 的实现。

dom.js:XML DOM 接口的 JS 实现,主要的函数是 xmlParse( XMLString ),调用成功后就可以用标准 DOM 方式来操控返回的 XDocument 了。

xpath.js:XPath 的 JS 实现。

xslt.js:XSLT 的 JS 实现,要用到里面的 xsltProcess( XML, XSLT ),给定 XML 和 XSLT 得到转换的结果。
分享到:
评论

相关推荐

    Google AJAXSLT

    **Google AJAXSLT** 是一个由Google开发的JavaScript库,专为在Web浏览器环境中执行XSLT转换(XSL Transformations)和XPath查询而设计。XSLT是一种强大的XML转换语言,它允许开发者将XML数据转换成其他格式,如HTML...

    ajaxslt脚本库 google ajaxslt

    3. **调用Ajaxslt函数**:使用Ajaxslt提供的API,如`Ajaxslt.transformXML`,传入XML和XSLT作为参数,执行转换。 4. **处理结果**:转换后的结果通常是一个字符串,可以将其插入到DOM中或者进行其他操作。 **浏览器...

    Java and XSLT.pdf

    本文档通过详细的章节安排,系统地介绍了XSLT的基础知识及其与Java的结合应用。从XSLT的基础概念入手,逐步深入到高级特性,并结合实际案例,详细阐述了如何使用Java来扩展XSLT的功能,使其能够应对更复杂的逻辑需求...

    xslt中调用java

    在XSLT(可扩展样式表语言转换)中调用Java是一种常见的技术,它允许开发者利用XSLT处理XML文档时,与Java代码进行交互,从而实现更复杂的逻辑和功能。这种结合使得XSLT不仅可以进行简单的数据转换,还能执行更强大...

    XSLT简单教程- XSLT的实例

    #### 一、XSLT简介与工作原理 XSLT(Extensible Stylesheet Language Transformations)是一种用于转换XML文档的语言。它允许开发人员按照预定义的规则对XML文档进行转换,从而生成另一种格式的文档,例如HTML或XML...

    xslt手册

    6. XSLT 1.0与XSLT 2.0/3.0的区别:XSLT 2.0引入了许多新功能,如正则表达式支持、函数库扩展、更多数据类型和更强大的样式表组合能力。XSLT 3.0进一步增强了这些特性,如支持静态类型检查、流式处理API和异步处理。...

    xslt与xpath入门转换xml文档与数据

    每个模板都有一个匹配模式,当XML文档中有与之匹配的节点时,该模板就会被应用。 2. **选择器(Selectors)**:在XSLT中,选择器是XPath表达式,用于找到需要处理的XML节点。例如,`...

    testng-xslt-1.1.2.zip

    TestNG XSLT 1.1.2 是一个专门针对TestNG测试框架的扩展,它提供了将TestNG的测试结果转换为易于阅读和分析的XSLT格式的能力。这个压缩包文件“testng-xslt-1.1.2.zip”包含了这个扩展的源代码、文档以及可能的库...

    《XSLT与XPath入门:转换XML文档与数据》 [PDF]

    XML内容管理应用程序的增长刺激了对XSLT和Xpath技能的要求.本入门教程提供了XSLT处理模型的基础,为开发者提供了重要的基本功. XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。  XPath 是一种...

    XSLT与XPath入门转换XML文档与数据

    ### XSLT与XPath入门:转换XML文档与数据 #### 一、XSLT与XPath基础知识 **XSLT(Extensible Stylesheet Language Transformations)**是一种基于XML的标准语言,用于将一个XML文档转换成另一种XML文档或者HTML...

    xslt 扩展PDF教程

    我们将关注于XSLT扩展元素与函数的应用,以及如何在实际场景中使用这些特性。 知识点: ### 1. XSLT与EXSLT简介 XSLT是一种用于XML文档转换的语言,它允许开发者将源XML文档转换为HTML、PDF或任何其他格式的输出...

    XSLT 调用 Java 的类方法

    本文将详细介绍如何在XSLT中调用Java的类方法,并给出具体示例。 #### 三、步骤解析 调用Java类方法的过程主要包括两个步骤: 1. **声明Java扩展函数**:在XSLT文件中声明要调用的Java类所在的包名,并给该包名...

    XSLT标准参考手册

    **XSLT标准参考手册详解** XSLT(Extensible Stylesheet Language Transformations)是一种用于转换XML(Extensible Markup Language)文档的语言。它基于XPath,主要用于将XML数据转换成其他形式,如HTML、PDF或者...

    xslt转化HTML标签与数据结合

    8. **XSLT 1.0与XSLT 2.0/3.0的区别**:XSLT的版本更新带来了更多功能,如XPath 2.0/3.0的更强大表达式能力,以及流式处理等优化。 在实际应用中,开发人员可以利用XSLT来构建动态网站,将服务器端获取的XML数据...

    xslt语法参考手册

    - **变量与参数(Variables and Parameters)**:存储和传递值,增强脚本的灵活性。 **2. XPath的使用** XPath是XSLT中不可或缺的一部分,用于定位XML文档中的节点。主要的XPath表达式包括: - **节点选择(Node ...

    XSLT.2nd.Edition.Jul.2008.pdf

    - **Learning XSLT**:适合初学者的教程,从基础概念到高级技巧逐步介绍XSLT的使用方法。 - **Java & XML**:这本书重点介绍了如何在Java环境中使用XML技术,包括XSLT的应用。 #### 结论 XSLT 2.0 是一个强大且...

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

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

Global site tag (gtag.js) - Google Analytics