首页>参考读物>计算机科学与技术>软件与程序设计

XSLT和Xpath-XML转换指南
作者 : (美)John Robert Gardner,Zarella L.Rendon
译者 : 飞天工作组
出版日期 : 2002-06-01
ISBN : 7-111-09980-X
定价 : 42.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 312
开本 : 16开
原书名 : Guide to XML Transformations: Xpath and XSLT
原出版社:
属性分类: 店面
包含CD :
绝版 : 已绝版
图书简介

本书系统地介绍了使用XSLT和XPath进行XML转换的方法。本书概念清晰,循序渐进,并结合大量实例,详细讨论了进行XML转换所涉及的样式表、元素、函数、表达式等的具体使用方法,还介绍了三种免费的XSLT解析器,并在书后附录中给出了典型案例及应用。
本书附赠的光盘中包含书中所有例子的源程序代码。

图书前言

你一定听说过XML,你的老板想要你把它应用到你的工作中,你该怎么办?
也许你用过HTML,而且知道标记是什么,知道标记与XML是有关联的,甚至你知道XML是什么和它能做什么。但你可能不知道的是,当XML识别文件的内容和向文本中增加结构时,它并不能告诉你怎样去处理这些内容,或者除了存储这些信息以外还能做些什么。这是件好事情,因为这意味着你的内容可以用在许多不同的场合。
一旦你将内容用XML标记过,你就可以用它去表示许多事情,但这里我们仅选择一些典型的或者说标准的应用来讨论。使用XSLT,你可以为XML加入样式,把它变成其他的XML,或者只是把它拆开,然后将它重新生成为不同的形式。
XSLT就像是藏在XML王冠之后的权力,它可以访问任一层次上的任一部分的XML数据,并可以重新使用它。可以毫不夸张地说,XSLT和它的同伴XPath就像是胶水和胶泥紧密地联系在一起,无论是在商用、学术研究,还是编程者个人兴趣开发上,它都能产生无穷的应用变化。掌握了XSLT,你不必害怕在数据或信息结构设计领域过早地落伍。
XSLT很容易使用。事实上,XSLT本身就是XML,XSLT就像一种可以说的语言,它具有语法、可供编程的丰富词汇;同时,它又很容易理解、学习和使用。
XSLT将为非编程者搭建一座桥梁,它提供了一种理解XML语法的简单途径,同时XSLT还拥有了丰富的脚本编写机制和进行文件导航的便利方法。
本书的宗旨是,使有着丰富编程经验的人,或者是刚刚学会标记语言的新手,都能够更方便地使用这套强有力的工具来维护、添加、更新和传递XML数据—无论这些数据是用在Web上、内部局域网上,还是B2B(商业到商业)商业模式中。
如果你希望不断提高控制信息的能力,本书将告诉你如何去做(当然还不仅如此)。实际上,到第1章结束时,你将能学会XML文档转换到HTML的基本方法,生成的HTML可以在任何一个Web浏览器上浏览。相继的几章将进一步巩固和加强这方面的基础知识,配合示例进行更详细的解释,同时对一些容易被误解的地方进行重点说明。
当你读这本书时,把你的计算机打开放在手边,花点时间安装一种XSLT的解析器(解析语言),然后一边看书一边跟着操作。在实践中学习是最好的方法,尤其对于学习XSLT和XPath。第13章将向你介绍如何安装CD中的软件,书中的每一个例子都可以在CD中的example目录中找到,并且是按章节的顺序组织的。
XSLT是一种激发人们创造力的语言,同时,它也会给你丰厚的回报。准备好享受这趟学习之旅吧,本书一定能带给你惊喜!
为什么我们要使用XSLT
浏览器能够表示的是HTML,而不是一般的XML标记。一旦你有了XML,你必须还要对它做些什么呢?你能用XML打印吗?你能把XML发送到Web上吗?你能浏览XML吗?是的,你能,但是仅有XML是不够的。
XSLT让你能够将XML转换成HTML或另一种类型的XML,或者仅仅是简单的文字。仅需一点点的创造力和正确的XSLT知识,你就能熟练地将XML输出到实际应用所需的任何一种形式。
对于所有这一类XML转换的问题,XSLT提供了快速、简便的解决办法。但是使用XSLT也并非能无师自通。
“这本书,连同所使用的相应的工具,都是在实际应用中成功使用XML所必需的。”
——Sharon Adler,W3C XSL工作组联合主席
本书出版之时,XSLT的最新版本是1.0。W3C 的XSL工作组正在考虑在2.0版中加入一些额外的特性,包括支持XML模式、XML查询等等。
本书的读者对象
本书是为那些整日和电子数据打交道,想掌握XML转换方法却又不想经过学习编程语言的艰难过程的人准备的。如果你对使用SGML、XML甚至HTML感觉很顺手,你将会从这些通用的标记语法中获得巨大的收益。
有些人认为XSLT比较难,因为它不是一种结构化的编程语言。大部分的编程语言都具有结构化、简练的句法,而XSLT的句法是XML,它被设计成一种适合人们阅读习惯的和易于理解的句法。在你使用XSLT之前,最好能有一些标记语言方面的知识。
有些人可能发现XSLT较难使用,因为它不能对每一种情况都提供转换的解决方法。举个例子来说,你不能用XSLT去把文字转换成XML,这就需要另外进行处理。但是对于大部分天天使用XML转换的人来说,XSLT仍然是一种首选的工具。
本书的组织结构
这本书是按照如下方法组织的:首先建立一个基本概念,然后按章节逐步增加内容。首先在第1章介绍了XSLT的基本概念和简要概述了XML,在其后的章节中,随着创建样式表逐步增加功能的介绍,越复杂的问题越放在后面。
第1章用最简练的语言概括了XML和XSLT的基本情况。这一章对最基本的语法做了简要的总结,可以为对标记语言有不同层次了解的人提供一个总体的概念。
第2章介绍了样式表概念,这对于理解XSLT是一个至关重要的概念,同时也给出了关于样式表的通用的专有名词解释。
第3章增加了更多的相关概念,并提供了更详尽的解释和用法;同时也对第1章和第2章涉及到的模板有了更深入的研究。
第4章定义并解释了XPath的表达式和模式。
第5章包含了XPath的函数,这些函数对于掌握XSLT中的大多数元素的用法是至关重要的。
第6章介绍了生成新的XML元素及其属性的几种不同方法。
第7章讨论了如何引用和插入多样式表,也讨论了模板优先级问题。
第8章介绍了如何使用变量和参数。
第9章涉及了一些具有迭代性或条件受限的情况,以及从输入到输出复制XML所需的工具。
第10章给出了如何控制输出选项的一些细节,包括删除或保留空白域、产生出错信息等。
第11章介绍了XSLT的函数及相关的元素,包括用document( )函数插入外部的XML文件,用<xsl:key>使用键值(key)等。
第12章讨论了XSLT的扩展、解析器和Java,同时介绍了三种商用的XSLT解析器。
第13章介绍了三种免费的解析器—Xalan、Saxon和XT,并对它们的安装指令和外围组件进行了描述。
三个附录分别介绍本书的几个相关的主题、研究实例和相关的参考资料。
本书中的一些约定
本书中提到XML、XSLT和HTML元素时,总是对它们做出一定的标识。例如,<xsl: stylesheet>,总是用尖括号<和>括起来,并使用印刷字体。任何一种表达式或函数,比如count( ),也都用印刷字体。
每一个元素都有一个元素模型的定义,它可直接由XSLT来规范,如下所示。元素模型被组织成为一个带有选项的目录描述(作为一种注解)的XML元素,它都是由具有合法属性的起始标记、内容(作为一种注解)和结束标记(除非元素是空白)三部分组成。属性用黑体表示,它的值如果是有定义的内容类型,用斜体字表示;如果是字符型的,用引号括起来。内容中的元素可以是任意的,用a?表示;也可以是任意的并可重复的,用a*表示。
函数原型从XPath和XSLT规范中直接获得,格式是这样的:首先是关键字Function,后面是冒号,跟着用斜体字表示目标返回类型,函数的名称用黑体表示,圆括号里的斜体字表示参数,如下所示:
版本
本书中所使用的语言的版本号如下:XSL转换(XSLT)是1.0版;XML路径语言(XPath)是1.0版;可扩展标记语言(XML)是1.0版。其他参考材料来自于XML REC-xml-names-19990114中的Namespaces。
在这本书中,James Clarks的 XT测试的版本是19991105,Michael Kay的Saxon用的版本是6.2.2。

作者简介

(美)John Robert Gardner,Zarella L.Rendon:暂无简介

译者简介

飞天工作组:暂无简介

译者序

XSLT是将XML转换为HTML和其他浏览器可解析形式的有效工具。本书系统地介绍了使用XSLT和XPath进行XML转换的方法。既有相关概念的阐述,又有具体方法的分析。作者力图通过本书,使读者对HTML、XML、XSLT、XPath等基本概念及其相互关系有比较清楚的理解,并在此基础上掌握XML转换的具体方法。
本书主体可以分为三部分:第一部分阐述了基本概念及其相互关系;第二部分结合大量实例,详细讨论了进行XML转换的方法和所涉及的样式表、元素、函数等的具体使用方法;第三部分介绍了三种免费的XSLT解析器的安装及使用方法。本书后面还有三个附录,给出了几个案例和典型应用。
本书对几个重要的概念及其相互关系阐述得很清晰,同时给出了大量的源代码实例,可以说是关于使用XSLT和XPath进行XML转换的比较全面的指南。本书适合想尽快了解和掌握XSLT及XML的初学者,也适合有一定基础,想进一步提高的程序开发人员、Web管理员等。
本书的翻译是在飞天工作组全体成员的共同努力下完成的,他们是葛新、刘实、蔡一兵、朱军、朱琳杰、马长斗、宋慧、林建国、诸志远、陈杰、张一鸣。由于XML和XSLT技术发展异常迅速,原书中出现许多新的概念和名词,工作组成员多方查找相关资料,尽力符合原意。但由于译者水平所限,书中定有很多不当之处,请读者批评指正。

2002年1月

图书目录

第1章  一张XSLT样式表的剖析 1
1.1  什么是标记 1
1.2  什么是XSLT 2
1.3  什么是XPath 3
1.4  XSLT样式表概念 4
1.5  XSLT术语 8
1.5.1  事件的根 8
1.5.2  引出分支:节点 9
1.5.3  文档顺序 10
1.6  全面理解“家庭”树:XSLT中寻址 12
第2章  XSLT样式表的基本概念 15
2.1  XSLT样式表的样板 15
2.1.1  文档元素:<xsl:stylesheet>或者
<xsl:transform> 15
2.1.2  文字结果元素样式表 18
2.1.3  文档元素的子元素 19
2.2  在XML文档中嵌入样式表 20
2.3  XSLT样式表术语 21
2.3.1  样式表 21
2.3.2  样式表元素和转换元素 22
2.3.3  结果树 22
2.3.4  源树 22
2.3.5  空白域 23
2.3.6  良好的格式 23
2.4  XSLT样式表的XML成分 24
2.4.1  XML声明 24
2.4.2  文档类型声明 25
第3章  高级的样式表 26
3.1  模板:构建转换模块 26
3.1.1  模板处理 26
3.1.2  <xsl:template>顶层元素 27
3.1.3  <xsl:template>属性 28
3.1.4  模板的成分 34
3.1.5  <xsl:apply-templates>指令元素 35
3.1.6  <xsl:call-template>指令元素 39
3.1.7  <xsl:value-of>指令元素 42
3.2  内嵌模板规则 43
第4章  XPath表达式 45
4.1  XPath句法和术语 45
4.1.1  XPath中文件顺序 46
4.1.2  上下文节点 46
4.1.3  当前节点 47
4.1.4  上下文尺寸 47
4.1.5  邻近位置 47
4.1.6  表达式 47
4.1.7  定位路径 55
4.1.8  轴 56
4.1.9  节点检测 60
4.1.10  判定 61
4.2  缩写 62
第5章  XPath 函数 64
5.1  XPath 函数库 64
5.2  节点集核心函数组 68
5.2.1  id()函数 69
5.2.2  local-name()函数 71
5.2.3  name()函数 72
5.2.4  namespace-uri()函数 73
5.2.5  last()函数 76
5.2.6  position()函数 77
5.2.7  count()函数 79
5.3  字符串核心函数组 80
5.3.1  string()函数 80
5.3.2  字符串转换规则 81
5.3.3  concat()函数 83
5.3.4  substring()函数 84
5.3.5  substring-after()函数 87
5.3.6  substring-before()函数 88
5.3.7  normalize-space()函数 89
5.3.8  translate()函数 90
5.3.9  contains()函数 93
5.3.10  starts-with()函数 95
5.3.11  string-length()函数 96
5.4  布尔值核心函数组 97
5.4.1  boolean()函数 97
5.4.2  布尔值转换规则 98
5.4.3  false()函数 98
5.4.4  true()函数 99
5.4.5  lang()函数 99
5.4.6  not()函数 100
5.5  数字核心函数组 101
5.5.1  number()函数 101
5.5.2  数值转换规则 102
5.5.3  sum()函数 102
5.5.4  ceiling()函数 103
5.5.5  floor()函数 104
5.5.6  round()函数 104
第6章  使用XSLT构建新的XML文档 106
6.1  使用LRE产生元素 106
6.2  <xsl : element> 指令元素 107
6.3  使用<xsl: attribute>指令元素生成属性 109
6.4  <xsl:attribute-set>顶层元素 114
6.4.1  name属性 114
6.4.2  use-attribute-sets属性 114
6.4.3  通过<xsl:attribute-set>来使用属性组 115
6.5  <xsl:text>指令元素 117
6.5.1  disable-output-escaping 属性 117
6.5.2  使用<xsl:text>来生成文本 118
6.5.3  不使用<xsl:text>时生成文本的方法 120
6.6  为LRE添加属性 121
6.6.1  属性值模板 122
6.6.2  在LRE中使用<xsl:attribute>元素 123
6.6.3  在LRE中使用<xsl:attribute-set>
元素和xsl:use-attribute-sets属性 123
6.7  注释和处理指令 124
6.7.1  <xsl:comment>指令元素 124
6.7.2  <xsl: processing-instruction>
指令元素 125
6.8  名称空间的别名 126
第7章  使用多样式表 128
7.1  处理外部的样式表 128
7.1.1  <xsl: include>顶层元素 128
7.1.2  <xsl:import>顶层元素 131
7.1.3  <xsl:import>和<xsl:include>顶层
元素的比较 132
7.1.4  <xsl:apply-imports>指令元素 135
7.2  模板规则处理和优先级 138
7.2.1  当前模板规则 138
7.2.2  模板规则冲突的解决方法 138
7.2.3  替换导入模板的优先次序和优先级 140
第8章  变量的处理 143
8.1  变量的声明和赋值 143
8.1.1  <xsl:variable>顶层元素 143
8.1.2  <xsl:param>顶层元素 144
8.1.3  <xsl:with-param>元素 145
8.2  结果树段 146
8.3  使用变量引用 148
8.3.1  局部和全局变量的比较 148
8.3.2  复制声明 149
8.3.3  使用<xsl:with-param>指令元素 151
8.4  <xsl:variable>和<xsl:param>元素的比较 153
8.5  <xsl:with-param>同<xsl:param>
和<xsl:variable>的比较 153
第9章  复制、迭代和XSLT条件处理元素 154
9.1  <xsl:copy-of>指令元素 154
9.2  <xsl:copy>指令元素 156
9.3  <xsl:for-each>指令元素 158
9.4  <xsl:sort>元素 160
9.4.1  <xsl:sort>的select属性 161
9.4.2  <xsl:sort>的data-type属性 163
9.4.3  <xsl:sort>的order属性 164
9.4.4  <xsl:sort>的case-order属性 165
9.4.5  <xsl:sort>的lang属性 167
9.5  <xsl:if>指令元素 167
9.6  <xsl:choose>指令元素 169
9.6.1  <xsl:when>条件元素 170
9.6.2  例外条件<xsl:otherwise> 170
9.6.3  在<xsl:choose>中使用<xsl:when>
和<xsl:otherwise> 170
9.7  <xsl:number>指令元素 171
9.7.1  <xsl:number>的count属性 173
9.7.2  <xsl:number>的level属性 174
9.7.3  <xsl:number>的from属性 177
9.7.4  value属性 178
9.7.5  format属性 178
9.7.6  <xsl:number>的lang属性 180
9.7.7  letter-value属性 180
9.7.8  grouping-separator属性 180
9.7.9  grouping-size属性 180
9.7.10  <xsl:fallback>指令元素 181
第10章  控制输出选项 182
10.1  <xsl:output>顶层元素 182
10.1.1  <xsl:output>的属性 183
10.1.2  以xml方式输出文件 186
10.1.3  以html方式输出文件 189
10.1.4  以text方式输出文件 192
10.2  顶层元素<xsl:strip-space>
和<preserve-space> 193
10.3  错误消息和日志的产生 194
第11章  XSLT函数和相关的XSLT元素 197
11.1  XSLT函数组 197
11.1.1  XSLT的node-set函数 198
11.1.2  XSLT的current()函数 204
11.1.3  XSLT的key()函数和<xsl:key>
顶层元素 205
11.2  XSLT的字符串函数 210
11.2.1  XSLT的system-property()函数 210
11.2.2  XSLT的generate-id()函数 211
11.2.3  XSLT的format-number()函数 214
11.2.4  <xsl:decimal-format>顶层元素 215
11.2.5  XSLT的unparsed-entity-uri()函数 217
11.3  XSLT的布尔型函数组 217
11.3.1  XSLT的element-available()函数 217
11.3.2  XSLT的function-available()函数 220
第12章  XSLT处理器、XSLT扩展和Java 223
12.1  XSLT处理器 223
12.2  扩展元素和扩展函数 224
12.3  名称空间 224
12.3.1  名称空间的原理 224
12.3.2  名称空间剖析 225
12.3.3  缺省名称空间 226
12.3.4  限制命名和无分隔符命名 226
12.3.5  XSL名称空间 227
12.3.6  使用其他的名称空间 227
12.3.7  缺省XML名称空间 228
12.3.8  声明扩展名称空间及扩展名称
空间的应用性 228
12.3.9  处理器扩展功能、Java附加功能
和XSLT W3C规范的前景 229
12.3.10  整合XSLT处理器和OASIS的XSLT
整合委员会 229
12.4  Java 230
12.5  商业XSLT处理器 233
12.5.1  Sun公司的XSLTC 233
12.5.2  Oracle的XML开发工具 234
12.5.3  安装Oracle XSL处理器 234
12.5.4  Microsoft的MSXML 235
12.5.5  安装最新版本的Microsoft XML
解析器 237
第13章  Xalan、Saxon和XT 238
13.1  Xalan 238
13.1.1  Xalan-C++ 238
13.1.2  Xalan-J 241
13.1.3  使用Eric Lawson GUI界面Xalan-J 242
13.1.4  安装Xalan-J的基本命令行界面 242
13.1.5  使用Xalan-J的命令行界面方式
和扩展功能 243
13.1.6  Xalan-J处理器扩展 244
13.2  Saxon 248
13.2.1  在Solaris/UNIX或Windows Java中
完全安装Saxon 248
13.2.2  在Windows下安装Instant Saxon 249
13.2.3  Saxon选项 249
13.2.4  Saxon命令行参数 250
13.2.5  Saxon扩展 250
13.3  XT 262
13.3.1  在Windows上安装XT 263
13.3.2  在UNIX上安装XT和XP 263
13.3.3  在Macintosh上安装XT和XP 264
13.3.4  XT扩展 266
13.3.5  XT处理器的限制 267
13.4  使用Saxon、Xalan或XT处理器产生
多输出文档 268
附录A  案例学习 272
附录B  分组使用Muenchian方法 300
附录C  在人工智能“N-Queens”问题中
使用XSLT 303

教学资源推荐
作者: [意]阿尔贝托·博斯凯蒂(Alberto Boschetti) 卢卡·马萨罗(Luca Massaron) 著
作者: 刘恒洋 杨宏雨 主编
作者: (美)Daniel M. Bikel, Imed Zitouni 编
作者: (美)David Vandevoorde
参考读物推荐