什么是XSLT,什么是XPath

作者:joyshi 来源:信→者 时间:2008-01-21 13:12:00 

1. 什么是XSLT

大家可能听说过XSL(eXtensible Stylesheet Language),XSL和我们这里说的XSLT从狭义上理解是一样的,而按照W3C的标准,XSLT的说法更严格些,因此我们在文章中统一使用XSLT的称法。XSLT的英文标准名称为eXtensible Stylesheet Language Transformation。根据W3C的规范说明书(http://www.w3.org/TR/xslt),最早设计XSLT的用意是帮助XML文档(document)转换为其它文档。但是随着发展,XSLT已不仅仅用于将XML转换为HTML或其它文本格式,更全面的定义应该是: XSLT是一种用来转换XML文档结构的语言。

2. 为什么要用XSLT

我们已经知道,XML是一种电脑程序间交换原始数据的简单而标准的方法。它的成功并不在于它容易被人们书写和阅读,更重要的是,它从根本上解决了应用系统间的信息交换。因为XML满足了两个基本的需求:

(1).将数据和表达形式分离。就象天气预报的信息可以显示在不同的设备上,电视,手机或者其它。

(2).在不同的应用之间传输数据。电子商务数据交换的与日俱增使得这种需求越来越紧迫。
  为了使数据便于人们的阅读理解,我们需要将信息显示出来或者打印出来,例如将数据变成一个HTML文件,一个PDF文件,甚至是一段声音;同样,为了使数据适合不同的应用程序,我们必须有能够将一种数据格式转换为另一种数据格式,比如需求格式可能是一个文本文件,一个SQL语句,一个HTTP信息,一定顺序的数据调用等。而XSLT就是我们用来实现这种转换功能的语言。将XML转换为HTML,是目前XSLT最主要的功能。

3. XSLT的历史

想很多其他XML家族成员一样,XSLT是由W3C起草和制定的。它的主要发展历程如下:
  .1995年由James Clark提议;
  .1997年8月正式提案为XSL;
  .1998年5月由Norman Walsh完成需求概要;
  .1998年8月18日XSL草案发布;
  .1999年11月16日正式发布XSL 1.0推荐版本。
  目前,XSLT仍然在快速的发展中,XSLT1.1的草案已经可以在W3C网站(http://www.w3.org/TR/xslt11)上看到。

4. 什么是XPath

XPath是XSLT的重要组成部分。那么XPath是什么呢?我们首先来了解一下XSL系列的"家族"关系。

XSL在转换XML文档时分为明显的两个过程,第一转换文档结构;其次将文档格式化输出。这两步可以分离开来并单独处理,因此XSL在发展过程中逐渐分裂为XSLT(结构转换)和XSL-FO(formatting objects)(格式化输出)两种分支语言,其中XSL-FO的作用就类似CSS在HTML中的作用。而我们这里重点讨论的是第一步的转换过程,也就是XSLT。

另外,在学习XML时我们已经知道XML是一个完整的树结构文档。在转换XML文档时可能需要处理其中的一部分(节点)数据,那么如何查找和定位XML文档中的信息呢,XPath就是一种专门用来在XML文档中查找信息的语言。XPath隶属XSLT,因此我们通常会将XSLT语法和XPath语法混在一起说。

用一种比较好理解的解释:如果将XML文档看作一个数据库,XPath就是SQL查询语言;如果将XML文档看成DOS目录结构,XPath就是cd,dir等目录操作命令的集合。

5. XSLT和CSS的比较

CSS同样可以格式化XML文档,那么有了CSS为什么还需要XSLT呢?因为CSS虽然能够很好的控制输出的样式,比如色彩,字体,大小等,但是它有严重的局限性,就是:

(1) CSS不能重新排序文档中的元素;
  (2) CSS不能判断和控制哪个元素被显示,哪个不被显示;
  (3) CSS不能统计计算元素中的数据;

换句话说,CSS只适合用于输出比较固定的最终文档。CSS的优点是简洁,消耗系统资源少;而XSLT虽然功能强大,但因为要重新索引XML结构树,所以消耗内存比较多。

因此,我们常常将它们结合起来使用,比如在服务器端用XSLT处理文档,在客户端用CSS来控制显示。可以减少响应时间。

6. XSLT和IE5

在XSLT草案发布不久,微软就在IE4中提供了支持XSL功能的预览版本,到IE5.0发布时,正式全面支持XSLT,可是由于IE5发布的比XSLT1.0标准时间早,因此在IE5.0中支持的XSTL功能和XSLT 1.0略有不同。(呵呵~~XML推行的主要原因之一就是解决HTML过分依赖浏览器的问题,现在微软又想标新立异?)。好在微软的IE5.5中执行的标准已经和W3C的XSLT1.0基本相近。但令人头疼的是IE5.0已经发行了几百万套,您使用的XSLT很可能不能被客户的浏览器正确执行。目前XSLT 1.1仍在发展中,W3C及有关组织也在和微软协商争取获得统一。呵呵~~故事还远远没有结束噢。

注意:本文中提到的语法都是根据XSLT 1.0的标准来讲的,没有任何微软的"方言"。

标签:xslt,xpath,xml
0
投稿

猜你喜欢

  • ASP实现下载系统防盗链方法

    2008-02-01 14:05:00
  • SQL Server 作业同步 (结合备份作业)

    2012-07-11 15:59:47
  • 如何把ASP源代码编写成DLL组件

    2007-10-19 13:49:00
  • HMAC算法--asp源码

    2009-08-28 12:51:00
  • MySQL转义字符的实际应用

    2010-08-31 14:55:00
  • 关于设计的一些个人看法

    2008-06-12 12:44:00
  • 如何从ASP连接到Oracle Server?

    2009-11-15 19:52:00
  • 纯CSS制作的网页中的lightbox效果

    2007-11-06 18:59:00
  • oracle 常用的几个SQL

    2009-12-01 12:36:00
  • SQL Server 2000中生成XML的小技巧

    2009-02-13 17:12:00
  • Mysql的最大连接数怎样用java程序测试

    2009-01-14 12:05:00
  • asp如何在ADO中使用存储查询?

    2010-06-17 12:52:00
  • asp GetString的用法

    2008-06-12 13:46:00
  • Hello! 404

    2010-09-06 13:37:00
  • asp如何实现网络打印?

    2010-05-24 18:31:00
  • 在ASP中使用SQL语句之7:ORDER BY

    2007-08-11 12:51:00
  • (X)HTML Strict 下的嵌套规则

    2008-03-08 18:39:00
  • SQL server高级应用 收藏版

    2012-10-07 11:04:06
  • javascript闭包的秘密

    2008-09-28 20:39:00
  • 功能和外观都还不错的js版幻灯片效果

    2007-08-05 12:20:00
  • asp之家 网络编程 m.aspxhome.com