第1章 XSL 简介 1
1.1 XML 概述 2
1.1.1 DTD 和 Schema 3
1.1.2 XML 名字空间 5
1.1.3 转换/格式化的必要性 6
1.2 XSL 简介 7
1.2.1 XSLT 样式表 8
1.2.2 XSLT 处理模型 8
1.3 工具 10
1.4 转换 XML 的其他手段 11
1.5 XSL 的应用 11
第2章 XPath——XML 路径语言 13
2.1 XPath 简介 13
2.1.1 XPath 的应用目标 13
2.1.2 XPath 的工作原理 14
2.1.3 XPath 数据模型 16
2.1.4 其他的 XPath 概念 19
2.1.5 XPath 函数 23
2.2 XPath 语法 24
2.2.1 非简写 XPath 语法 25
2.2.2 简写语法 32
2.2.3 两种语法的注意事项 35
2.3 实例 36
2.3.1 下载并安装 Instant Saxon 36
2.3.2 XML 源文档 36
2.4 XPointer、XLink 和 XQuery 43
2.4.1 XPointer 44
2.4.2 XLink 44
2.4.3 XQuery 45
2.5 本章小结 45
第3章 XSLT 基础 46
3.1 XSLT 处理 46
3.1.1 XSLT 处理模型 46
3.1.2 处理一份文档 47
3.1.3 推模型和拉模型 51
3.2 关于名字空间的话题 59
3.3 XSLT 元素 61
3.3.1 <xsl:stylesheet> 61
3.3.2 <xsl:output> 62
3.3.3 <xsl:template> 65
3.3.4 <xsl:apply-templates> 66
3.3.5 <xsl:value-of> 66
3.3.6 <xsl:copy>和<xsl:copy-of> 67
3.3.7 控制流程元素 70
3.3.8 <xsl:sort> 76
3.3.9 <xsl:number> 79
3.3.10 <xsl:text> 80
3.3.11 <xsl:element> 81
3.3.12 <xsl:attribute> 83
3.4 默认模板 84
3.5 模板匹配冲突 86
3.6 XSLT 函数 86
3.6.1 position()和 last() 87
3.6.2 name() 89
3.6.3 count() 90
3.7 本章小结 90
第4章 模块化的 XSLT 91
4.1 变量的取值 92
4.1.1 <xsl:variable>的 select 属性 94
4.1.2 变量选择和节点集 96
4.2 参数的功能 100
4.2.1 参数和外部程序的关系 101
4.2.2 建立命名模板 109
4.3 本章小结 120
第5章 外部 XSLT 121
5.1 文档和超空间世界 122
5.2 过于繁复的样式表 130
5.2.1 导入的重要性 130
5.2.2 OO XML 的起点 132
5.2.3 超级应用导入 135
5.2.4 Import 和 Include,谁更好 137
5.2.5 可扩展性 138
5.3 样式表的将来:XSLT1.1 147
5.3.1 废除 node-set() 147
5.3.2 多个输出流 148
5.3.3 通用脚本块和扩展 149
5.3.4 导入模板的参数化 150
5.4 XSLT 2.0以及其他 151
5.5 本章小结 153
第6章 使用 DOM 和 SAX 进行转换 155
6.1 什么时候使用 DOM 或者 SAX 来代替 XSLT 155
6.2 XML DOM 157
6.2.1 快速了解对象和接口 157
6.2.2 文档对象模型 158
6.2.3 使用 Java 进行 DOM 编程 159
6.2.4 使用 VBScript 进行 DOM 编程 166
6.3 SAX 169
6.3.1 基础知识 169
6.3.2 SAX 的简短历史 170
6.3.3 什么时候使用 SAX 171
6.3.4 使用 Java 开发一个 SAX 2.0转换应用程序 171
6.3.5 使用 Microsoft 的 SAX 产品 188
6.3.6 过滤和编写 XML 195
6.3.7 SAX 的其余内容 203
6.4 本章小结 205
第7章 Microsoft XSL 技术 206
7.1 MSXML3 206
7.1.1 安装 208
7.1.2 XML 文档 209
7.1.3 高级转换 217
7.2 .NET 224
7.2.1 XmlReader 226
7.2.2 XmlDocument 229
7.2.3 XmlNavigator 230
7.2.4 XslTransform 234
7.2.5 NET 中的 MSXML 236
7.3 本章小结 238
第8章 优化性能 239
8.1 性能陷阱 239
8.2 第一阶段:转换中的脚本 240
8.2.1 克服 XSLT 语言限制 240
8.2.2 遗漏操作符的情况 241
8.2.3 从有脚本到无脚本的转换 242
8.2.4 早期的 XSLT 243
8.2.5 中间 XSLT 249
8.2.6 简单小结第一阶段的性能问题 252
8.3 第二阶段:低劣的设计、功能延伸和野心 253
8.3.1 事倍功半的做法 254
8.3.2 静态代码分析 256
8.3.3 第二个性能改进 257
8.3.4 第三个性能改进 259
8.3.5 第二阶段性能问题的小结 261
8.4 第三阶段:低劣的体系结构 261
8.5 补充 264
8.6 一些惊奇 265
8.7 综述 266
8.8 本章小结 267
第9章 CSS 和 XSL-FO 268
9.1 将样式应用到 XML 的技术 268
9.2 CSS 原理 271
9.2.1 关于级联样式表的说明 271
9.2.2 CSS 格式化模型 281
9.3 将 CSS 应用到 XML 283
9.3.1 将 XML 链接到样式表 283
9.3.2 SVG 中的 CSS 292
9.3.3 与 XSLT 一起使用 CSS 294
9.4 XSL-FO——XSL 格式化对象 297
9.4.1 XSL-FO 术语 297
9.4.2 XSL-FO 概况 298
9.4.3 XSL-FO 网页 299
9.5 XSL-FO 文档的结构 301
9.5.1 利用 XSLT 创建一个 XSL-FO 文档 305
9.5.2 使用 XSL-FO 创建 PDF:FOP 312
9.5.3 展望 314
9.6 本章小结 315
第10章 通用结构转换 316
10.1 转换 XML 树 316
10.1.1 创建产品目录 317
10.1.2 交付购货订单 322
10.2 以样式表生成样式表 332
10.3 从关系型数据库中转换数据 335
10.3.1 Oracle XSQL Servlet 336
10.3.2 从 XSQL 页中创建 XML 结果集 336
10.3.3 将 XML 数据插入到 Oracle 数据库中 338
10.4 本章小结 339
第11章 以 XSLT 增加样式 341
11.1 应用程序的要求 341
11.2 原型1:基本目录 342
11.3 原型2:控制显示的详细内容 348
11.4 版本1:按作者进行选择 357
11.4.1 样式表的变化 357
11.4.2 脚本的变化 359
11.5 版本2:服务器端版本 360
11.5.1 ASP 代码 361
11.5.2 样式表 365
11.6 版本3:走向移动 366
11.6.1 WAP 和 WML 368
11.6.2 list.xsl 369
11.6.3 book.xsl 371
11.6.4 ASP 页 372
11.7 应用程序集成 374
11.8 本章小结 377
第12章 转换到 SVG 378
12.1 PGML、VML 和 SYG 380
12.2 SVG 中的简单图形 381
12.3 以 XSLT 分解文本 391
12.4 制作星图案 397
12.5 SVG 的将来 402
12.6 本章小结 403
第13章 转换为 VoiceXML 405
13.1 具有声音能力的应用程序 405
13.2 VoiceXML 解决方案 407
13.2.1 VoiceXML 示例文档 408
13.2.2 VoiceXML 元素 412
13.2.3 建立环境 414
13.3 一个更高级的 VoiceXML 应用程序 416
13.3.1 定义语法 417
13.3.2 基于 Web 的应用程序 418
13.3.3 通话流程 418
13.4 用于 VoiceXML 的 XSLT 423
13.4.1 XSLT:开放源工具 424
13.4.2 XSLT:生成 VoiceXML 文档 426
13.5 本章小结 438
第14章 XSLT 与 XML 大纲 439
14.1 XML 大纲概述 439
14.2 从大纲生成 XML 实例 441
14.2.1 术语 441
14.2.2 大纲设计 442
14.2.3 转换 446
14.3 从 XML 文档生成大纲 450
14.4 生成用于大纲验证的样式表 454
14.5 实施数据完整性约束条件 459
14.5.1 规则表达式简介 460
14.5.2 大纲中的规则表达式 461
14.5.3 Xalan Java 扩展 462
14.5.4 验证大纲 463
14.6 本章小结 464
第15章 XSLT 和 XML 展望 465
15.1 打破 XSLT 的框框 465
15.1.1 六个简单的物理机器 466
15.1.2 六种简单的抽象机械 467
15.1.3 XML 与其他计算技术的关系 472
15.2 第一个复杂的抽象机械 474
15.2.1 PNML 介绍 474
15.2.2 了解你的大纲 476
15.2.3 变量的值 476
15.2.4 最困难的部分 478
15.2.5 开发的最后阶段 480
15.3 基于大纲的编程 485
15.3.1 基于大纲编程的三个级别 485
15.3.2 XSLT 中的基于大纲的编程 486
15.3.3 Petri 网中基于大纲的编程 487
15.4 本章小结 488
第16章 案例研究——在线内容发布 490
16.1 源格式 490
16.2 一个简单的转换 492
16.3 添加独立样式表功能 495
16.3.1 第一次导入 496
16.3.2 创建一个具有指向各章链接的目录 497
16.4 将内容拆分到几个文件 501
16.4.1 拆分文件 502
16.4.2 创建术语表 509
16.4.3 创建一个索引 511
16.4.4 家族树 514
16.5 一个实时转换方案 514
16.5.1 ASP 页 515
16.5.2 样式表 516
16.6 结论 520
16.7 本章小结 520
附录 A XPath 参考 521
附录 B XSLT 参考 537
附录 C XML 文档对象模型 569
附录 D SAX2.0:XML 简单应用编程接口 578
附录 E XSLT 处理程序和工具 616
附录 F XSLT 便捷工具 627
附录 G 资源 660