XSLT轻松入门第一章: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的标准来讲的,没有任何微软的"方言"。

(0)

相关推荐

  • XSLT轻松入门第一章: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 什么是XS

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

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

  • 轻松入门正则表达式之非贪婪匹配篇详解

    非贪婪匹配 (.*?) import re a = '456qwe789rty123abc' re=re.findall('456(.*?)789',a) print(re) 通常情况,满足匹配规则"456(.*?)789"的内容通常不止一个,那么findall()函数会从字符串的起始位置开始寻找文本A,找到后开始寻找文本B,当找到第一个文本B后,暂时停止寻找,将文本A和文本B之间的内容存入列表:然后继续寻找文本A,并重复之前的步骤,直到到达字符串的结束位置,并将所有匹配到的内容存入列

  • Java轻松入门冒泡 选择 插入 希尔 归并排序算法

    今天我们主要看一些简单的排序 常见的时间复杂度 常数阶Ο(1) 对数阶Ο(log2n) 线性阶Ο(n) 线性对数阶Ο(nlog2n) 平方阶Ο(n²) 立方阶Ο(n³) K次方阶Ο(n^k) 指数阶Ο(2^n) 常见的时间复杂度对应图 Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n²)<Ο(n³)<…<Ο(2^n) <Ο(n!)<O(n^n) 冒泡排序(Quicksort) 算法描述: ①. 比较相邻的元素.如果第一个比第二个大,就交

  • Java 轻松入门了解File类的使用

    目录 概述 构造方法 基本介绍 代码示例 常用方法 获取文件和目录的基本信息 判断功能 创建和删除功能 目录遍历功能 概述 要学习Java中的File类,首先我们要知道,在Java的API中File类的定义,即文件和目录路径的抽象表现形式,不是文件本身.所以在File类中,所涉及到的操作都只是关于文件名称和目录路径的,而不是文件内容,如果想对文件内容进行操作,还得需要学习I/O流(输入/输出流). 构造方法 基本介绍 只有构造了File类,我们后面才能对它进行操作.对于File类的构造下面介绍三

  • MongoDB 简单入门教程(安装、基本概念、创建用户)

    工作方向上的原因,不得不接触部分MongoDB的运维工作,之前有接触过一些MongoDB的内容,基本的运维操作没有什么问题,包括MongoDB的集群搭建.数据分片功能等都测试过.但是时间久了,很多东西不用就忘记了,最近准备出一个系列的MongoDB的运维操作文章,希望把这块儿内容重新拾起来.网上查了查,MongDB讲得好的书也就是<MongoDB权威指南>这本了,但是它引用的MongoDB版本比较旧,所以最好结合着官方文档看,这样收获会更快.MongoDB中文论坛里面也有不少前人总结的好文档,

  • mysql数据库入门第一步之创建表

    创建数据库 右键-新建数据库 输入库名.选择字符集和排序规则,点确定 创建数据库成功 新建表 my-表-右键-新建表 如上图所示,在第一个标签页"栏位"中 名:字段的名字 类型:字段的类型,有几十种,常用的有以下几种 char,可以存定长的字符串 varchar,可以存变长的字符串(定长和变长的区别在长度中介绍) int,可以存-2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 之间的数字 datetime,可以存日期类型的数据 长度:数

  • Python 机器学习第一章环境配置图解流程

    前言 本文主要是分享一下机器学习初期,基本的环境搭建.也适用于其他python工程化项目环境搭建.都差不多. Anaconda安装 anaconda官方链接:Anaconda | The World's Most Popular Data Science Platform 点击Get Started 点击Download Anaconda installers 根据自己的操作系统,下载对应的安装包. 安装anaconda 一路点下去,安装完成. 使用conda配置python3.6环境 目前py

  • 易语言编程入门第一个程序

    目录 易语言的优点: 最早接触易语言是三年前的事情了,那时候是因为DNF这个游戏我才知道了易语言这个编程语言,当时对他就非常的憧憬.只不过那时候易语言的学习资源比较少,而且自身的学业比较重就没有仔细的了解了. 最近几日再回归DNF的时候突然想到了易语言,所以决定抽点空闲时间学习一下,先定一个小目标:做一个DNF的辅助工具!(也许最终都无法完成也说不定) 这是第一天学习的内容 易语言的优点: 1.     代码是中文的,降低了学习的门槛 2.     全可视化编程,即输即画减少了代码出错的可能 3

  • Java 轻松入门使用Fiddler抓包工具教程

    一. 下载安装Fiddler 这里强烈建议大家在官网上下载安装,在此附上链接https://www.telerik.com/fiddler,在其它地方安装很有可能会给你再下一堆不必要的软件(垃圾全家桶),待下载安装好后,页面大概是这样的: 二. 设置抓取HTTPS功能 刚下载安装好后,是默认不支持抓取HTTPS协议的,要想抓取HTTPS, 先点击左上角的Tools-Options-HTTPS 然后再选中这三个选项, 接着点击Actions-Export Root Certificate to D

随机推荐