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(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-12-31 01:44:44

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

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 什么是XS

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等脚本语言还简单,所以

[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#却没有. 例如,

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 2. XSLT的实例 2.1 XSLT如何转换XML 2.2 一个实例 2.3 过程解析 2.4 XSLT的用途 3.XSLT的元素语法 3.1 xsl:template和xsl:apply-template

矩阵论 第一章 基础概念和定律

数学基础之矩阵篇 理论概念: 思考的时候可能有用 数域: 一个数集对四则运算封闭(四则运算的结果仍在数集内)则称之为数域. Q,R,C都是数域,而Z不是数域因为对除法不封闭. 加群: 一个非空集合V, 若V中有一种规则称之为加法"+", 满足 交换律 a+b=b+a 结合律 a+b+c=a+(b+c) 存在零元 (任意u∈V有u+0=u)  存在唯一负元 (任意u∈V有唯一-u使 u + (-u) =0). 则称V在加法运算下成一个加群.记为(V,+) 线性空间(或称向量空间): 对于