XSLT轻松入门第一章:XSLT的概念_XML/RSS

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的标准来讲的,没有任何微软的"方言"。

时间: 2024-08-25 12:07:32

XSLT轻松入门第一章:XSLT的概念_XML/RSS的相关文章

XSLT轻松入门第一章: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(eXte

XSLT轻松入门第一章:XSLT的概念

概念   1.5 XSLT和CSS的比较 CSS同样可以格式化XML文档,那么有了CSS为什么还需要XSLT呢?因为CSS虽然能够很好的控制输出的样式,比如色彩,字体,大小等,但是它有严重的局限性,就是: (1) CSS不能重新排序文档中的元素: (2) CSS不能判断和控制哪个元素被显示,哪个不被显示: (3) CSS不能统计计算元素中的数据: 换句话说,CSS只适合用于输出比较固定的最终文档.CSS的优点是简洁,消耗系统资源少:而XSLT虽然功能强大,但因为要重新索引XML结构树,所以消耗内

XSLT轻松入门第二章:XSLT的实例_XML/RSS

2. XSLT的实例 2.1 XSLT如何转换XML 2.2 一个实例 2.3 过程解析 2.4 XSLT的用途 2.1 XSLT如何转换XML 我们打个有趣的比方,你玩过橡皮泥吧,用不同的模子按上去,就可以做出需要的形状.如果我们假设XML数据文档是一块大橡皮泥,XSLT就象是一个模子,用力一按,就做出需要的形状来---符合不同需要的HTML文档. 具体看下面的过程示意图: 我们将XML原文档输入,用XSL作为模板,通过转换引擎,最终输出需要的HTML文档.其中的转换引擎就是比喻中"用力一按&

XSLT轻松入门第二章:XSLT的实例

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  2.3 过程解析   如果你成功的看到效果,你也许想知道这些代码的具体含义,我们来详细解说:看hello.xsl文件   <?xml version="1.0" encoding="iso-8859-1"?>   这是标准的XML文档的首行代码,因为XSLT本身也是XM

XSLT轻松入门

XSLT轻松入门第一章:XSLT概念 作者: 阿捷 前言 大家好,从今天起我们将一起来学习XML家族的另一种语言XSLT,XSLT类似HTML中的CSS,但是比CSS功能要强大的多.学习XSLT的前提是您对XML已经有一些了解,如果您没有学习过XML,可以先点这里(http://www.etechnic.com.cn/columns/xml_1.shtml)看我先前写的一篇文章<XML轻松入门手册>.XSLT可以说更偏向是一种程序语言,但它没有常见程序语言复杂,甚至比js等脚本语言还简单,所以

Solaris培训第一章:系统概念

第一章:系统概念(System Concepts) Objectives Upon completion of this module, you should be able to Match the three parts of an operating system (kernel, shell, and file system) to their definitions Identify the three most common shells in the Solaris environ

Flash基础理论课 第一章 基础动画概念

返回"Flash基础理论课 - 目录" 第一章 基础动画概念 Flash就是一台动画机器.从Flash 最早的版本开始,就支持补间动画--只需要创建两个不同的关键帧,然后让Flash 自动创建补间动画即可.本书将介绍 Flash 中的一种强大的语言-ActionScript.该书包括了编程,数学,物理等技术,并结合 ActionScript 让物体动起来,这些都是补间动画无法比拟的. 什么是动画? "动画"一词,引用美国传统词典中的解释 1.使有生命:充满生命力 2

[C# 3.0 入门] [第一章 Lambda表达式] 第五节

[C# 3.0 入门] [第一章 Lambda表达式] 第五节:Lambda表达式的使用范例 & Lambda表达式的各种变体 Lambda表达式的使用范例 到现在为止的例子大多数,完全都是从文法上到功能上的说明,多数情况下不必使用Lambda表达式也能够写出来.最后,我还是来展示几个有一定实用性的Lambda表达式的实例. 这里是一个,输入整形的数组,以其值为除数,执行除法运算后输出结果的程序.因为要执行除法运算,所以输入的值可能存在不能接受的值(0)的情况(就是说,这个示例代码可以在输入值不

[C# 3.0 入门] [第一章 Lambda表达式] 第四节

[C# 3.0 入门] [第一章 Lambda表达式] 第四节:Lambda的用途 & 类型声明能够和不能够省略的情况 成问题的是,虽然为了源代码的简洁性,很想用Lambda表达式,但是要写的代码却不能全部都用Lambda表达式来写. 那么, Lambda表达式究竟能做到什么程度呢? 习惯了C/C++编程风格的程序员,一定以为因C#语法与之很相似,所以用C#编写相对复杂的程序应该也没有问题.可是很遗憾,情况不是这样.那是因为C/C++具有能写出复杂功能的表达式的逗号表达式,而C#却没有. 例如,