第一部分 XML与XSLT简介 3
第1章 简介 3
1.1 什么是XML 3
1.2 可扩展的XML文档的重要性 4
1.3 XML和HTML之间的差别 4
1.4 显示XML文档 4
1.5 XSLT的作用 5
1.6 HTML发布流程中的XSLT 5
1.7 小结 6
1.8 下一章 6
第2章 XML 7
2.1 URI 7
2.2 基本XML文档结构 7
2.2.1 XML声明 7
2.2.2 XML文档类型声明 8
2.2.3 文档元素 8
2.3 XML中的合法名称 9
2.4 元素 9
2.4.1 嵌套元素 9
2.4.2 属性 9
2.4.3 命名空间 10
2.5 字符数据 12
2.6 实体 13
2.7 处理指令 13
2.8 注释 13
2.9 XML文档的根 13
2.10 小结 14
2.11 下一章 14
第3章 XSLT简介 15
3.1 会议室预订文档 15
3.1.1 预订文档 15
3.1.2 会议室文档 16
3.1.3 任务 17
3.2 设计XSLT文档 19
3.2.1 最简单的XSLT文档 19
3.2.2 生成HTML元素 20
3.2.3 显示lastUpdated元素 22
3.2.4 处理多种选择 25
3.2.5 基本匹配 27
3.2.6 深入探讨包含的元素 28
3.2.7 显示每天的全部会议 30
3.2.8 显示特定日期中的会议 36
3.2.9 决策 38
3.2.10 显示会议室功能、预订和使用情况 46
3.3 小结 49
3.4 下一章 50
第二部分 文档解析 53
第4章 XML文档树 53
4.1 树的术语 53
4.2 将XML文档转换为树 55
4.2.1 转换文档元素中包含的元素 55
4.2.2 一个示例 56
4.2.3 文本节点 60
4.2.4 属性 62
4.3 遍历树 62
4.3.1 枚举树的所有节点 63
4.3.2 示例 63
4.4 文档顺序 64
4.5 树节点的惟一性 65
4.6 小结 65
4.7 下一章 66
第5章 路径 67
5.1 路径和表达式 67
5.1.1 数字 67
5.1.2 字符串 67
5.1.3 布尔值 68
5.1.4 节点集 68
5.2 位置路径 68
5.2.1 上下文 69
5.2.2 步 70
5.2.3 轴 70
5.2.4 节点测试 80
5.2.5 计算轴和节点测试 83
5.2.6 谓词 83
5.2.7 关于计算步的小结 85
5.3 合并步 85
5.3.1 初始的上下文 89
5.3.2 设计位置路径 91
5.4 数据类型和操作符 91
5.4.1 字符串 92
5.4.2 数字 92
5.4.3 布尔值 93
5.4.4 节点集 95
5.4.5 运算符的优先级 100
5.5 节点名称 100
5.5.1 扩展名称 100
5.5.2 一些奇怪的结果 102
5.6 XPath表达式的示例 102
5.7 小结 104
5.8 下一章 104
第6章 转换 105
6.1 使转换过程可视化 105
6.2 文字结果元素 107
6.3 带有xsl:apply-templates元素的简单模板 107
6.4 嵌套的xsl:apply-templates元素 110
6.5 模式 114
6.6 匹配模板 114
6.6.1 匹配第一个节点 115
6.6.2 第二个节点 116
6.7 模板优先级 116
6.8 当前节点和当前节点列表,上下文节点和上下文 117
6.9 XSLT文档 118
6.9.1 非XSLT元素 118
6.9.2 有关xsl:template元素 119
6.9.3 关于xsl:apply-templates元素 120
6.9.4 默认模板 120
6.9.5 关于call-template元素 121
6.9.6 参数 121
6.9.7 复制 121
6.10 小结 123
6.11 下一章 123
第7章 控制 125
7.1 xsl:if元素 125
7.2 for-each元素 127
7.3 命名模板的循环 131
7.4 排序 136
7.4.1 排序数据类型 137
7.4.2 升序或降序 138
7.4.3 大小写 138
7.4.4 与语言有关的排序 138
7.4.5 多重排序 138
7.5 向控制台发送消息 139
7.6 XSLT文档外的参数 140
7.7 小结 141
7.8 下一章 141
第8章 构建结果树 143
8.1 用于HTML的xsl:output元素 143
8.1.1 没有结束标记的元素 143
8.1.2 民布尔值 144
8.1.3 指令 144
8.1.4 文档类型声明 145
8.2 包含文字结果元素 146
8.2.1 参数值模板 146
8.2.2 属性-值模板的上下文节点 147
8.3 构建元素 148
8.4 插入注释 149
8.5 插入指令 150
8.6 xsl:test元素 150
8.7 xsl:value-of元素 151
8.8 变量 151
8.8.1 全局变量 152
8.8.2 变量的可见性 152
8.9 结果树段 153
8.10 只有空白字符的文本节点 154
8.10.1 XSLT文档 154
8.10.2 源文档 154
8.10.3 xsl:space元素 155
8.11 小结 157
8.12 下一章 157
第9章 合并模板 159
9.1 xsl:include元素 159
9.2 xsl:import元素 160
9.3 xsl:apply-imports元素 163
9.4 小结 164
9.5 下一章 164
第10章 扩展 165
10.1 声明扩展函数和扩展元素 165
10.2 使用扩展函数 166
10.3 使用扩展元素 166
10.4 检查可用性 166
10.5 小结 167
10.6 下一章 167
第三部分 使用技巧与案例研究 171
第11章 经验与技巧 171
11.1 表的生成 171
11.2 字符替换 174
11.3 用xsl:include实现项目重用 175
11.4 用xsl:import实现从不同项目中重复使用 175
11.5 使用mode属性组织模板 176
11.6 xsl:include和xsl:import元素 176
11.7 使用全局参数设置配置 177
11.8 绝对路径和模板模式 177
11.9 模板模式的步 178
11.10 在模板模式中使用简单的谓词 178
11.11 使用translate()函数转换大小写 179
11.12 短模板 179
11.13 标志你的XML数据 179
11.14 使用xsl:apply-templates 180
11.15 一次一页 180
11.16 外观、生成、编写 181
11.17 工作目录 182
11.18 XSLT模板应用程序 183
11.19 删除一个元素 186
11.20 使用XML配置文件 187
11.21 使用排列文件 187
11.22 一次一棵子树 188
11.23 使用xsl:copy-of 188
11.24 覆盖默认模板 189
11.25 避免使用Descendant轴 189
11.26 减小节点集的大小 190
11.27 避免使用多个谓词 190
11.28 小结 191
11.29 下一章 191
第12章 案例研究 193
12.1 Web站点 193
12.1.1 主页 193
12.1.2 汇总页 195
12.1.3 详情页 204
12.1.4 非XSLT任务 204
12.2 设计XML文件 204
12.3 组织XSLT文档 207
12.3.1 主页 207
12.3.2 汇总页 207
12.3.3 详情页 211
12.4 设计XSLT模板 212
12.4.1 工作量的分配 213
12.4.2 广告 213
12.4.3 页眉和页脚 214
12.4.4 完整新闻 216
12.4.5 详情页的左边栏 219
12.4.6 页眉 220
12.4.7 详情页 220
12.4.8 链接项目 222
12.4.9 投票区 223
12.4.10 汇总页的左边栏 224
12.4.11 新闻 225
12.4.12 汇总页 229
12.5 小结 230
12.6 下一章 230
第四部分 其他文件的转换 233
第13章 转换为XML和文本文件 233
13.1 XHTML 233
13.2 XSL 234
13.2.1 简单示例 234
13.2.2 显示格式对象 237
13.3 SVG 237
13.4 将XML文档转换为文本文件 239
13.5 小结 248
第五部分 附录 251
附录A 工具和资源 251
A.1 XML工具 251
A.1.1 XML编辑器 251
A.1.2 XML数据库 251
A.1.3 XSLT处理器 252
A.1.4 DOM和SAX API 252
A.2 资源 252
A.2.1 W3C规范 252
A.2.2 XSLT处理器 252
A.3 XSLT Web站点 253
附录B 字符集和编码方案 255
附录C XSLT和XPath参考 257
C.1 XSLT元素 257
C.1.1 xsl:apply-imports 259
C.1.2 xsl:apply-templates 262
C.1.3 xsl:attribute 266
C.1.4 xsl:attribute-set 268
C.1.5 xsl:call-template 268
C.1.6 xsl:choose 270
C.1.7 xsl:comment 272
C.1.8 xsl:copy 273
C.1.9 xsl:copy-of 276
C.1.10 xsl:decimal-format 277
C.1.11 xsl:element 278
C.1.12 xsl:fallback 279
C.1.13 xsl:for-each 280
C.1.14 xsl:if 282
C.1.15 xsl:import 282
C.1.16 xsl:include 283
C.1.17 xsl:key 283
C.1.18 xsl:message 285
C.1.19 xsl:namespace-alias 286
C.1.20 xsl:number 287
C.1.21 xsl:otherwise 298
C.1.22 xsl:output 298
C.1.23 xsl:param 300
C.1.24 xsl:preserve-space 301
C.1.25 processing-instruction 301
C.1.26 xsl:sort 302
C.1.27 xsl:strip-space 306
C.1.28 xsl:stylesheet 308
C.1.29 xsl:template 309
C.1.30 xsl:text 310
C.1.31 xsl:transform 311
C.1.32 xsl:value-of 311
C.1.33 xsl:variable 313
C.1.34 xsl:when 314
C.1.35 xsl:with-param 315
C.2 XSLT和XPath函数 316
C.2.1 boolean 316
C.2.2Ceiling 316
C.2.3Concat 317
C.2.4Contains 317
C.2.5Count 318
C.2.6Current 318
C.2.7 document 319
C.2.8 element-available 321
C.2.9 false 321
C.2.10 floor 321
C.2.11 format-number 322
C.2.12 function-available 325
C.2.13 generate-id 325
C.2.14 id 329
C.2.15 key 330
C.2.16 lang 330
C.2.17 last 330
C.2.18 local-name 331
C.2.19 name 333
C.2.20 namespace-uri 334
C.2.21 normalize-space 336
C.2.22 not 337
C.2.23 number 337
C.2.24 position 337
C.2.25 round 340
C.2.26 starts-with 340
C.2.27 string 341
C.2.28 string-length 341
C.2.29 substring 342
C.2.30 string-after 342
C.2.31 substring-before 343
C.2.32 sum 344
C.2.33 system-property 345
C.2.34 translate 345
C.2.35 true 347
C.2.36 unparsed-entity-uri 348