xslt轻松入门第一章:xslt概念
大家好,从今天起我们将一起来学习xml家族的另一种语言xslt,xslt类似html中的css,但是比css功能要强大的多。学习xslt的前提是您对xml已经有一些了解,如果您没有学习过xml,可以先点这里(http://www.etechnic.com.cn/columns/xml_1.shtml)看我先前写的一篇文章《xml轻松入门手册》。xslt可以说更偏向是一种程序语言,但它没有常见程序语言复杂,甚至比js等脚本语言还简单,所以不必担心学习困难。阿捷将依然站在普通设计师的角度,用平实易懂的语言,由浅入深的介绍xslt。好了,让我们一起来探索xslt的秘密吧!
声明:因为xslt的标准在不断发展,语法也在不断扩充,我们下面所学习的知识是以1999年11月16日发布的xslt 1.0为基准的,所以可能是不完整的,最新的资料请到w3c网站(http://www.w3.org/tr/xslt)。
提纲
本文共分五大章:xslt概念,xslt的实例,xslt的元素语法,xpath的语法,xslt的资源。
1.xslt的概念
1.1 什么是xslt
1.2 为什么要用xslt
1.3 xslt的历史
1.4 什么是xpath
1.5 xslt和css的比较
1.6 xslt和ie5
1.xslt的概念
我们首先来澄清一个概念,大家可能听说过xsl(extensible stylesheet language),xsl和我们这里说的xslt从狭义上理解是一样的,而按照w3c的标准,xslt的说法更严格些,因此我们在文章中统一使用xslt的称法。它们之间具体的关系我们会在下面讲述。
1.1 什么是xslt
xslt的英文标准名称为extensible stylesheet language transformation。根据w3c的规范说明书(http://www.w3.org/tr/xslt),最早设计xslt的用意是帮助xml文档(document)转换为其它文档。但是随着发展,xslt已不仅仅用于将xml转换为html或其它文本格式,更全面的定义应该是:
xslt是一种用来转换xml文档结构的语言。
1.2 为什么要用xslt
我们已经知道,xml是一种电脑程序间交换原始数据的简单而标准的方法。它的成功并不在于它容易被人们书写和阅读,更重要的是,它从根本上解决了应用系统间的信息交换。因为xml满足了两个基本的需求:
(1).将数据和表达形式分离。就象天气预报的信息可以显示在不同的设备上,电视,手机或者其它。
(2).在不同的应用之间传输数据。电子商务数据交换的与日俱增使得这种需求越来越紧迫。
为了使数据便于人们的阅读理解,我们需要将信息显示出来或者打印出来,例如将数据变成一个html文件,一个pdf文件,甚至是一段声音;同样,为了使数据适合不同的应用程序,我们必须有能够将一种数据格式转换为另一种数据格式,比如需求格式可能是一个文本文件,一个sql语句,一个http信息,一定顺序的数据调用等。而xslt就是我们用来实现这种转换功能的语言。将xml转换为html,是目前xslt最主要的功能。
1.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)上看到。
1.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等目录操作命令的集合。
1.5 xslt和css的比较
css同样可以格式化xml文档,那么有了css为什么还需要xslt呢?因为css虽然能够很好的控制输出的样式,比如色彩,字体,大小等,但是它有严重的局限性,就是:
(1) css不能重新排序文档中的元素;
(2) css不能判断和控制哪个元素被显示,哪个不被显示;
(3) css不能统计计算元素中的数据;
换句话说,css只适合用于输出比较固定的最终文档。css的优点是简洁,消耗系统资源少;而xslt虽然功能强大,但因为要重新索引xml结构树,所以消耗内存比较多。
因此,我们常常将它们结合起来使用,比如在服务器端用xslt处理文档,在客户端用css来控制显示。可以减少响应时间。
1.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的标准来讲的,没有任何微软的"方言"。
闽公网安备 35060202000074号