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

XSLT技术内幕
作者 : (美)Steven Holzner
译者 : 闻道工作室
出版日期 : 2002-01-01
ISBN : 7-111-09633-9
定价 : 49.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 508
开本 : 16开
原书名 : Inside XSLT
原出版社:
属性分类: 店面
包含CD :
绝版 : 已绝版
图书简介

本书全面地介绍了XSLT的各方面知识,读者不仅可以了解完整的XSLT语法,还可以深入学习XSLT的应用方法。主要内容包括:XSLT的基础知识,样式单的创建与使用,模板的创建与使用,匹配形式的创建,数据排序,XPath的应用与理解,XSLT和XPath函数的使用,模板、参数和变量的命名,XSLT处理程序API的使用等等。本书还提供了数以百计的工作实例,以便使读者更易掌握XSLT。
本书内容全面、组织合理、实例丰富,并包含有其他书籍中不多见的上百个在线资源、技巧和分析参考。本书不仅可作为初学者入门指导,还可以作为程序人员的完整参考手册。

图书前言

这是一本关于可扩展样式单语言变换的著作。本书试图在一本书的篇幅之内尽可能全面且清晰易懂地介绍XSLT。XSLT完全是关于转换XML文档为其他的XML文档,或者整个地转换为其他类型的文档,并且正变为极端热门的话题。本书是关于XSLT的、最完备的著作,而且我确信与其他有关书籍相比,本书提供了对XSLT的更深入的探讨。这是一个快速扩张的领域,也是一个复杂的领域—我已经在此投入了艰辛的劳动,为的是使读者避免这样做。
许多XSLT书籍只集中探讨XML至HTML的变换,但是,相比之下,本书则深入得多。XML至XML的变换正变得非常重要,而且随着具备不同特色的XML应用的增加,这种变换不久将比XML至HTML的变换更重要。
实际上,在本书中,我们将推出完整的解决方案,考察从XML至XML、HTML、XHTML、
RTF(多信息文本格式文档)、普通文本、JavaScript、 基于SQL的数据库和XSL-FO(可扩展样式单语言格式化对象文档)的XSLT变换。
为了完整地介绍XSLT,本书逐个地描述所有可以得到的XSLT元素,以及它们的所有属性。本书还介绍了每种可用于XSLT样式单的XSLT和XPath函数。
读者还将看到本书中有数以百计的工作实例,毫无疑问,它是理解XSLT如何工作的最佳方式。如果我没有通过文字解释清楚某些内容,读者还可以参考这些实例,本书试图对几乎所有内容,都介绍了一种实用的、完整的实例。
所有这些实例都可以运行。本书使用可以得到的最流行的XSLT处理程序,它们都可以从因特网上免费下载:Xalan、XT、Saxon、Oracle的XSLT处理程序,甚至包括内置于微软的Internet Explorer的处理程序。本书通篇都将介绍从因特网上的什么位置得到这些软件,以及如何使用它。
如同编写XML一样,编写XSLT同样不是一件普通和单调的任务:它会启发艺术修养、爱心、热情、快乐和执着—恼怒和挫折自不待言。笔者试图在本书中尽可能地真实体现这种精神并最大限度地捕捉XSLT的激动人心之处和威力。
本书包含哪些内容
本书提供了完整的XSLT知识。读者不仅可以了解完整的XSLT语法—从最基础的到最高级的,而且还将深入了解许多当今XSLT的应用方法。
本书介绍了数以百计的实际应用论题,诸如在服务器端执行XSLT变换,连接至数据库,以及用浏览实时地实施变换。
下面是本书所介绍的一些论题。注意,这些论题都包含许多内容(太多而无法逐一列举):
XSLT 1.0规范
XSLT 1.1工作草案
XSLT 2.0需求
XPATH 1.0规范
XPath 2.0需求
XSL 1.0候选规范
使用Xalan、Saxon XT和Oracle的XSLT处理程序
创建XML、HTML、RTF和文本输出
重复的模板处理
缺省模板规则
处理空白
禁止输出转义
选择适用的模板
创建匹配形式
在匹配形式中使用断言
匹配元素、子元素、元素后代、属性等
通过ID匹配
XPath缩写语法
If条件
For-each结构
作出条件性“选择”决策
简单元素排序
处理多重选择
嵌套模板
样式单参数
简化的样式单
编写用于Internet Explorer的样式单
创建样式单规则
使用扩展元素
使用扩展函数
创建文字结果元素
使用属性值模板
删除空白
创建新元素、属性和注释等
XSLT型态(上下文指定的格式化)
结果树片断
XPath数据格式
XPath表达式
所有的XSLT和XPath函数
创建属性集
调用已命名模板
关键字、单一和多值
创建多输出文档
在Java代码中,通过API调用来使用Oracle、Saxon、XML4Java和XT
为Internet Explorer中的XSLT使用JavaScript
XSL-FO格式化对象
XSL-FO格式化属性
用Java服务器页面(JSP)、活动服务器页面(ASP)和Java Servlet实现服务器端XSLT变换。
本书完整地介绍由World Wide Web联盟(W3C:XSLT 1.0规范、XSLT 1.1工作草案和XSLT 2.0需求—关于这些用语的具体含义,请参见第1章)创建的正式XSLT规范。正如第1章所介绍的,W3C已声称XSLT 1.1工作草案将不会成为正式规范,因为他们决心推出XSLT 2.0( XSLT 2.0目前正处于需求阶段,这是一种出现在工作草案阶段之前的阶段)。但是,由于XSLT 1.1工作草案的内容将会被吸收进XSLT 2.0—而且由于许多XSLT处理程序将实现XSLT 1.1的已知部分—因此,本书也将完整地介绍XSLT 1.1工作草案,并且在处理XSLT 1.1工作草案的专属材料时明确指明。
在编写一个XSLT样式单时,必须指明所使用的XSLT版本。因为版本1.1决不会超越工作草案阶段或被正式发布,本书的实例的版本设定为1.0,在讨论XSLT 1.1工作草案的专属材料期间除外,在此期间,本书显式地设置为版本1.1。
当今在因特网上存在非常丰富的XSLT资源,因此本书包含大量的这些资源的URL,包括本书所使用的所有软件,它们是可以免费下载的。(不过,存在一种必须说明的风险—因特网上的URL变动频繁,因此,如果在浏览它们时,遇到其中一些URL改变了的情况不要大惊小怪。)
本书的完整代码清单是可以在线得到的资源之一。读者可以在New Riders网站www.new-riders.com查找到它们。
适于阅读本书的读者
本书是为任何想要学习XSLT以及想了解如何在当今的现实生活中使用XSLT的人们而编写的。本书所作的惟一假设是,读者具备某些用XML和HTML编写文档的知识。本书的姐妹篇是New Riders出版的《Inside XML》(也由本人编写),如果读者需要很好地理解XML,可以翻阅那本书。这些主题方面的知识终究是有帮助的,它是读者真正需要的全部预备知识。
如果读者想要使用从网上免费下载的XSLT处理程序运行本书的实例,那么还应该在自己的系统中安装Java(它也是免费的),而且第1章还将完整地讨论这方面的内容。
本书是在什么层次上编写的
本书是按照从初级到高级的几种不同的层次进行编写的,因为XSLT领域太广泛。笔者试图尽可能多地介绍XSLT,因此包括从入门到高级层次的所有内容。如上所述,假设读者具备某些XML和HTML的知识。
本书不要求读者具备任何程序设计的知识。但第10章除外,该章专门讨论如何借助Java来利用XSLT的功能,如果读者想要学习这一章,则应该具备某些Java程序设计的经验。
由于当今存在众多的XSLT用法,因此本书使用了几种不同的软件包。笔者所使用的所有软件包都是从因特网上免费下载的,而且本书将告诉读者从哪里找到它们。
至此,万事俱备。如果读者有任何建议,可以给我写信,这是关心New Riders之举。本书计划成为介绍XSLT的新标准,确实比此前任何有关书籍更全面更易懂。如果读者认为本书欠缺什么内容,请告诉我,我将予以补充,因为我希望本书永保第一。
本书英文原书书名:Inside XSLT
英文原书书号:ISBN 0-7357-1136-4
英文原书出版社网站:www.newriders.com

作者简介

(美)Steven Holzner:暂无简介

译者简介

闻道工作室:暂无简介

译者序

XSLT(可扩展样式单语言变换)是与XML相关联的、且同样由W3C推出的一项标准。
在当今软件界,能像XML这样同时得到以微软和Sun为代表的两大阵营共同支持和成功应用,实属罕见,也许只有作为通信协议的TCP/IP标准可以与之比肩。这一切皆源于XML在描述(标记、置标)信息时的可扩展性、跨平台性和自描述性,和当今网络时代对跨平台信息交换的迫切需求,其中XSLT技术可谓功不可没。
关于XML的任何著作中几乎都不可避免地要讨论XSLT,这难免不让人产生XSLT为XML标准之一部分的误解。目前在市面上关于XML的书籍多如牛毛,但像本书这样专门介绍XSLT的专著则不多见。
首先,本书力求最全面地介绍XSLT。包括从XSLT 1.0规范、XSLT 1.1工作草案到XSLT 2.0需求的所有版本;与现有介绍XSLT的书籍不同,本书不仅讨论XML至HTML的变换,也探讨XML至XML、XHTML、SQL、JavaScript、普通文本乃至PDF文档的变换。
其次,本书力求清晰易懂地介绍XSLT。作为鼎鼎大名的畅销技术书籍作家,本书作者极尽其组织素材、阐释疑难问题之长,捐一己之艰辛以释读者求索之苦。实践出真知,几乎对每一技术要点,作者都提供了实例。此外,还提供了大量的相关网上资源的URL。
本书还超越了入门教程和完备参考手册之间的界限,不仅初学者可以用作学习XSLT的教材,中高级用户也将从中受益匪浅。
闻道工作室的多位同仁参与了本书的翻译、核对和录入,为力求准确,大家付出了巨大的努力,但由于我们学知有限,错误之处仍难避免,欢迎读者批评指正。

2001年11月

图书目录

第1章  XSLT基础 1
1.1  XSL = XSLT + XSL-FO 1
1.2  简单背景 1
1.2.1  XSLT—XSL变换 2
1.2.2  XSL-FO:XSL格式化对象 2
1.2.3  W3C规范 3
1.2.4  XSLT版本 3
1.3  XML文档 4
1.3.1  合式XML文档 6
1.3.2  有效的XML文档 6
1.4  XML在浏览器中看起来如何 9
1.5  XSLT变换 9
1.6  执行XSLT变换 12
1.7  使用独立的XSLT处理程序 12
1.7.1  使用一种Java XSLT处理程序 14
1.7.2  James Clark的XT 15
1.7.3  Saxon 16
1.7.4  Oracle XSLT 16
1.7.5  Xalan 16
1.8  用浏览器变换XML文档 18
1.9  在Internet Explorer中使用XSLT和
    JavaScript 21
1.10  位于Web服务器的XSLT变换 22
1.11  XML至XML的变换 23
1.12  XML至XHTML的变换 26
1.13  XSLT资源 29
1.13.1  XSLT规范、教程和实例 29
1.13.2  XSLT编辑器 30
1.13.3  XSLT实用工具 32
1.14  XSL格式化对象:XSL-FO 33
1.15  XSL-FO资源 33
1.16  格式化XML文档 34
1.17  XSLT样式单 35
1.18  变换文档为格式化对象形式 37
1.19  创建格式化文档 39
第2章  创建与使用样式单 41
2.1  树与节点 41
2.2  XSLT树模型与信息集模型 45
2.3  XSLT元素 46
2.4  < xsl:stylesheet >处理指令 46
2.5  <xsl:stylesheet>元素 48
2.6  顶层样式单的元素 50
2.7  <xsl:template>元素 51
2.8  模板体 51
2.8.1  XSLT指令 52
2.8.2  扩展元素 52
2.8.3  文字结果元素 52
2.8.4  模板中的匹配元素 53
2.9  <xsl:apply-templates>元素 54
2.10  访问节点值 57
2.11  支持XML基础规范 62
2.12  选择输出方法 63
2.12.1  输出方法:HTML 64
2.12.2  输出方法:XML 66
2.12.3  输出方法:文本 67
2.13  简易的样式单 68
2.14  内嵌样式单 69
2.15  <xsl:include>元素 72
2.16  <xsl:import>元素 73
2.17  <xsl:apply-imports>元素 74
2.18  利用Internet Explorer变换XML文档 76
第3章  创建与使用模板 80
3.1  创建一个模板 80
3.2  处理子节点 81
3.3  访问节点值 83
3.4  创建匹配形式 84
3.5  选择应用模板 85
3.6  读属性值 89
3.7  <xsl:text>元素 90
3.8  禁止输出转义 92
3.9  写属性值 95
3.10  属性值模板 96
3.11  处理空白 98
3.12  <xsl:strip-space>和<xsl:preserve-space>
     元素 99
3.13  自动缩进 101
3.14  缺省模板规则 104
3.15  删除内容 106
3.16  模板冲突的解决方案 108
3.17  <xsl:copy>元素 111
3.18  <xsl:copy-of>元素 113
3.19  <xsl:message>元素 114
第4章  创建匹配形式 117
4.1  匹配根节点 118
4.2  匹配元素 118
4.3  匹配子节点 118
4.4  匹配元素后代 119
4.5  匹配属性 119
4.6  正式定义的匹配形式 121
4.7  步骤形式的第1部分:形式轴 123
4.8  步骤形式的第2部分:节点测试 126
4.8.1  匹配注释 127
4.8.2  用node()匹配节点 128
4.8.3  用text()匹配文本节点 129
4.8.4  匹配处理指令 130
4.9  步骤形式的第3部分:断言 130
4.10  创建断言 133
4.10.1  断言:节点集 133
4.10.2  断言:布尔型 135
4.10.3  断言:数字 138
4.10.4  字符串 139
4.10.5  断言:结果树片断 142
4.11  通过ID匹配 143
4.12  通过关键字匹配 144
4.13  使用Or操作符 146
4.14  形式实例 148
第5章  数据选择与排序 157
5.1  <xsl:if>元素 157
5.2  <xsl:choose>、<xsl:when>和
    <xsl:otherwise>元素 161
5.3  <xsl:for-each>元素 168
5.4  排序元素 172
5.5  <xsl:number>元素 177
5.5.1  单层编号方式 178
5.5.2  任意层面编号方式 181
5.5.3  多层面编号方式 184
5.6  XSLT可扩展性 186
5.7  扩展函数 187
5.7.1  <xsl:script>元素 189
5.7.2  使用function-available函数 194
5.7.3  外部对象 194
5.8  扩展元素 194
5.9  <xsl:fallback>元素 197
第6章  XML变换为XML、HTML、XHTML、
    RTF和修改文档内容 199
6.1  <xsl:output>元素 200
6.1.1  输出方法:HTML 201
6.1.2  输出方法:XML 205
6.1.3  输出方法:Text 209
6.1.4  输出XHTML 211
6.2  基于输入的改变文档结构 215
6.3  <xsl:element>元素:
    运行时创建新元素 215
6.4  <xsl:attribute>元素:创建新属性 218
6.5  <xsl:comment>元素:生成注释 219
6.6  <xsl:processing-instruction>元素:
    生成处理指令 220
6.7  <xsl:document>元素:
    生成多个输出文档 222
6.8  <xsl:namespace>元素:
    生成名字空间声明 224
6.9  <xsl:attribute-set>元素:生成属性组 224
6.10  省略XML声明和生成XML片段 226
6.11  使用generate-id创建惟一的标识符 228
6.12  创建CDATA节 232
6.13  设置字符编码 233
6.14  模式:上下文指定格式 234
第7章  应用和理解XPath 242
7.1  理解XPath 243
7.2  XPath数据类型 246
7.2.1  XPath节点组 246
7.2.2  XPath数字 249
7.2.3  XPath字符串 250
7.2.4  XPath布尔值 254
7.3  创建XPath位置路径 255
7.3.1  XPath定位步骤第1部分:轴 255
7.3.2  XPath定位步骤第2部分:
      节点测试 256
7.3.3  XPath定位步骤第3部分:判定 257
7.3.4  使用XPath轴 257
7.3.5  使用ancestor轴 257
7.3.6  使用ancestor-or-self轴 258
7.3.7  使用descendant轴 259
7.3.8  使用descendant-or-self轴 261
7.3.9  使用following轴 261
7.3.10  使用following-sibling轴 263
7.3.11  使用namespace轴 264
7.3.12  使用parent轴 265
7.3.13  使用preceding轴 266
7.3.14  使用preceding-sibling轴 268
7.3.15  使用self轴 269
7.4  位置路径举例 270
7.5  XPath缩写语法 271
7.6  检查XPath表达式 272
7.7  XPath 2.0 272
第8章  使用XSLT和XPath函数 274
8.1  XSLT函数 275
8.1.1  current() 275
8.1.2  document() 277
8.1.3  element-available() 279
8.1.4  format-number() 280
8.1.5  function-available() 283
8.1.6  generate-id() 284
8.1.7  key() 286
8.1.8  system-property() 288
8.1.9  unparsed-entity-uri() 289
8.2  XPath 节点组函数 292
8.2.1  count() 292
8.2.2  id() 294
8.2.3  last() 295
8.2.4  local-name() 296
8.2.5  name() 296
8.2.6  namespace-uri() 296
8.2.7  position() 298
8.3  XPath字符串函数 298
8.3.1  concat() 299
8.3.2  contains() 300
8.3.3  normalize-space() 302
8.3.4  starts-with() 304
8.3.5  string() 306
8.3.6  string-length() 308
8.3.7  substring() 310
8.3.8  substring-after() 311
8.3.9  substring-before() 311
8.3.10  translate() 311
8.4  XPath数字函数 312
8.4.1  ceiling() 312
8.4.2  floor() 312
8.4.3  number() 314
8.4.4  round() 314
8.4.5  sum() 314
8.5  XPath布尔函数 315
8.5.1  boolean() 315
8.5.2  false() 315
8.5.3  lang() 316
8.5.4  not() 317
8.5.5  true() 319
8.6  <xsl:decimal-format>元素:
    创建数字格式 319
8.7  XSLT和XPath 2.0中的新函数 322
第9章  命名模板、参数和变量 324
9.1  <xsl:variable>元素:创建变量 324
9.1.1  变量作用域 325
9.1.2  工作中的变量 328
9.2  <xsl:call-template>元素:
    使用已命名模板 332
9.3  <xsl:param>和<xsl:with-param>元素:
    创建参数 335
9.3.1  递归调用模板 342
9.3.2  默认模板值 343
9.3.3  在命令行指定模板值 345
9.4  <xsl:key>元素:关键字匹配 345
9.5  <xsl:document>元素:
    生成多个结果文档 352
9.6  <xsl:namespace-alias>元素:
    生成样式单 355
第10章  使用XSLT处理程序API 358
10.1  Internet Explorer中的XSLT和
     JavaScript 358
10.2  处理解析错误 360
10.3  Internet Explorer和动态样式 363
10.4  Internet Explorer和XML数据岛 368
10.5  从XSLT处理程序直接调用Java 371
10.6  XSLT与Java API接口 372
10.7  Xalan与Java接口 373
10.8  Saxon与Java接口 375
10.9  Oracle XSLT处理程序与Java接口 379
10.10  XT与Java接口 382
10.11  变换XML为SQL数据库 385
10.12  与Active Server Pages
      一起使用XSLT 389
10.13  与Java Server Pages一起使用XSLT 391
10.14  与Java Servlet一起使用XSLT 393
第11章  使用XSLT创建XSL-FO文档:
       文本和表格 396
11.1  XSL格式化 396
11.2  XSL-FO格式化对象 397
11.3  XSL-FO格式化属性 400
11.4  格式化XML文档 405
11.5  使用XSLT样式单向XSL-FO变换 406
11.6  创建文档根:<fo:root> 413
11.7  创建主文件集布局:
     <fo:layout-master-set> 414
11.8  创建页面主文件:
     <fo:simple-page-master> 414
11.9  创建区域 415
11.10  创建页面序列:
      <fo:page-sequence> 417
11.11  创建流:<fo:flows> 418
11.12  创建块级内容:<fo:block> 419
11.13  创建表格 422
11.14  创建表格:<fo:table> 429
11.15  创建表格列:<fo:table-column> 430
11.16  创建表格主体:<fo:table-body> 431
11.17  创建表格行:<fo:table-row> 432
11.18  创建表格单元:<fo:table-cell> 433
第12章  使用XSLT创建XSL-FO文档:
        列表、图形、列和定位 436
12.1  创建XLS-FO列表 436
12.1.1  创建列表:<fo:list-block> 440
12.1.2  创建列表项:<fo:list-item> 441
12.1.3  创建列表项标签:
       <fo:list-item-label> 442
12.1.4  创建列表项体:
       <fo:list-item-body> 443
12.2  使用块容器定位文本:
     <fo:block-container> 444
12.3  内置级格式化对象 449
12.3.1  创建内置区域:<fo:inline> 450
12.3.2  分别处理字符:<fo:character> 451
12.3.3  创建页号:<fo:page:number> 453
12.3.4  插入图形:<fo:external-graphic> 454
12.3.5  格式化首行:
       <fo:initial-property-set> 456
12.4  创建脚注:<fo:footnote>和
     <fo:footnote-body> 457
12.5  创建链接:<fo:basic:link> 460
12.6  创建列 463
12.7  页面次序和页面编号 465
附录A  XSLT DTD 474
附录B  XSL-FO格式化属性 483

教学资源推荐
作者: Steven S.Muchnick
作者: 郑阿奇 主编 丁有和 等编著
作者: Brian W.Kernighan,Rob Pike
参考读物推荐