译者序 1
前言 1
第1章 XSLT的背景 1
1.1 什么是XSLT 1
目录 1
1.2 XSLT如何转换XML 3
1.2.1 XSLT和SQL的类比 5
1.2.2 XSLT处理器 6
1.2.3 一个样式表的例子 7
1.3 XSLT在XML家族中的地位 11
1.3.1 XSLT和XSL 11
1.3.2 XSLT和XPath 12
1.3.3 XSLT和Internet Explorer 5 13
1.3.4 XSLT和XML 13
1.3.5 XSL和CSS 15
1.4.1 起源 16
1.4 XSL的历史 16
1.4.2 第一个XSL提议 17
1.5 XSLT的特点 20
1.5.1 用XSL语法 20
1.5.2 无副作用 21
1.5.3 基于的规则 22
1.6 XSLT1.0范围以外 24
1.6.1 XSLT1.1 24
1.6.2 XSLT 2.0和XPath 2.0 25
1.7 在哪里使用XSLT 26
1.7.1 数据转换应用程序 26
1.7.2 出版 28
1.7.3 什么时候进行转换 28
1.8 小结 29
2.1 XSLT:一个系统概览 31
2.1.1 一个简要的概览 31
第2章 XSLT处理模型 31
2.1.2 是树,不是文档 32
2.1.3 不同的输出格式 32
2.1.4 多输入输出 34
2.2 树模型 35
2.2.1 作为树的XML 35
2.2.2 完成UML类图 41
2.2.3 什么东西不在树中 46
2.3 转换过程 50
2.3.1 模板规则 50
2.3.2 推处理 52
2.3.3 控制哪些节点被处理 55
2.3.4 模式 56
2.3.5 内建模板规则 57
2.3.6 冲突解决策略 57
2.4.2 表达式 58
2.4.1 变量 58
2.4 变量、表达式及数据类型 58
2.4.3 数据类型 61
2.5 小结 67
第3章 样式表结构 68
3.1 样式表的模板化结构 68
3.2 〈xsl:stylesheet〉元素 74
3.3 〈?xml-stylesheet?〉处理指令 75
3.4 嵌入式样式表 77
3.5.2 实现者定义的顶级元素 79
3.5 顶级元素 79
3.5.1 XSLT定义的顶级元素 79
3.5.3 用户定义的顶级元素 80
3.6 简化的样式表 81
3.7 模板体 83
3.7.1 XSLT指令 84
3.7.2 扩展元素 85
3.7.3 文字结果元素 86
3.8 属性值模板 93
3.9 扩展性 96
3.9.1 扩展函数 97
3.9.2 扩展元素 99
3.10 向前兼容 102
3.11 空白字符 103
3.11.1 样式表中的空白字符节点 106
3.11.2 去掉空白字符节点的效果 107
3.12 小结 108
第4章 XSLT元素 110
4.1 xsl:apply-imports 112
4.2 xsl:apply-templates 115
4.3 xsl:attribute 124
4.4 xsl:attribute-set 130
4.5 xsl:call-template 134
4.6 xsl:choose 141
4.7 xsl:comment 143
4.8 xsl:copy 145
4.9 xsl:copy-of 148
4.10 xsl:decimal-format 151
4.11 xsl:document 155
4.12 xsl:element 159
4.13 xsl:fallback 163
4.14 xsl:for-each 168
4.15 xsl:if 171
4.16 xsl:import 174
4.17 xsl:include 182
4.18 xsl:key 185
4.19 xsl:message 191
4.20 xsl:namespace-alias 193
4.21 xsl:number 197
4.22 xsl:otherwise 207
4.23 xsl:output 207
4.24 xsl:param 216
4.25 xsl:preserve-space 219
4.26 xsl:processing-instruction 222
4.27 xsl:script 224
4.28 xsl:sort 226
4.29 xsl:strip-space 231
4.30 xsl:stylesheet 231
4.31 xsl:template 240
4.32 xsl:text 248
4.33 xsl:transform 252
4.34 xsl:value-of 253
4.35 xsl:variable 256
4.36 xsl:when 264
4.37 xsl:with-param 266
4.38 小结 267
第5章 表达式 268
5.1 记号 268
5.3 语法树 269
5.2 本章导航 269
5.4 AbbreviatedAbsoluteLocationPath 271
5.5 AbbreviatedAxisSpecifier 272
5.6 AbbreviatedRelativeLocationPath 273
5.7 AbbreviatedStep 274
5.8 AbsoluteLocationPath 276
5.9 AdditiveExpr 277
5.10 AndExpr 278
5.11 Argument 279
5.12 AxisName 280
5.13 AxisSpecifier 285
5.14 Digits 285
5.15 EqualityExpr 286
5.16 Expr 291
5.17 ExprToken 293
5.18 ExprWhitespace 295
5.19 FilterExpr 296
5.20 FunctionCall 298
5.21 FunctionName 300
5.22 Literal 301
5.23 LocationPath 303
5.24 MultiplicadveExpr 304
5.25 MultiplyOperator 305
5.26 NameTest 306
5.27 NCName与NCNarneChar 307
5.28 NodeTest 309
5.29 NodeType 310
5.30 Number 311
5.31 Operator 312
5.32 OperatorName 313
5.33 OrExpr 314
5.34 PathExpr 315
5.35 Predicate 317
5.36 PredicateExpr 319
5.37 PrimaryExpr 320
5.38 QName 322
5.39 RelationalExpr 324
5.40 RelativeLocationPath 326
5.41 Step 327
5.42 UnaryExpr 329
5.43 UnionExpr 330
5.44 VariableReference 332
5.45 小结 333
第6章 模式 334
6.1 模式的正式定义 335
6.2 模式的非正式定义 336
6.3 冲突的解决方法 337
6.4 本章导航 337
6.5 Pattern 338
6.6 LocationPathPattern 339
6.7 RelativePathPattern 340
6.8 StepPattern 342
6.9 ChildOrAttributeAxisSpecifier 346
6.10 IdKeyPattern 347
6.11 小结 350
第7章 函数 351
7.1 boolean() 352
7.2 ceiling 354
7.3 ooncat 355
7.4 contains 357
7.5 count 358
7.6 current 360
7.7 document 363
7.8 element-available 372
7.9 false 377
7.10 floor 378
7.11 format-number 378
7.12 function-available 382
7.13 generate-id 385
7.14 id 389
7.15 key 391
7.16 lang 397
7.17 last 401
7.18 local-name 405
7.19 name 407
7.20 namespace-uri 411
7.21 normalize-space 413
7.22 not 416
7.23 number 418
7.24 position 419
7.25 round 422
7.26 starts-with 425
7.27 string 426
7.28 string-length 428
7.29 substring 429
7.30 substring-after 432
7.31 substring-before 434
7.32 sum 436
7.33 system-property 440
7.34 translate 442
7.35 true 444
7.36 unparsed-entity-uri 445
7.37 小结 446
第8章 编写扩展函数 447
8.1 什么时候需要扩展函数 447
8.2 调用扩展函数 448
8.3 什么语言最好 448
8.4 绑定扩展函数 449
8.5 XPath树和DOM树 449
8.6 Java语言绑定 452
8.6.2 选择一个Java方法 453
8.6.1 标识Java类 453
8.6.3 转换参数的规则 456
8.6.4 处理返回值 458
8.6.5 使用Java扩展函数 459
8.6.6 XSLTContest对象 465
8.7 JavaScript语言绑定 467
8.7.1 一个JavaScript例子 468
8.7.2 选择执行函数 469
8.8 小结 471
第9章 样式表设计模式 472
9.1 填空样式表 472
9.2 导航样式表 474
9.3 基于规则的样式表 477
9.4 计算样式表 480
9.4.1 不用赋值语句编程 481
9.4.2 为什么它们被称为变量 483
9.4.3 作弊 483
9.4.4 避免赋值语句 484
9.5 小结 496
第10章 精心设计的例子 497
10.1 格式化XML 497
10.1.1 前言部分 499
10.1.2 产生HTML框架 499
10.1.3 格式化文档头 500
10.1.4 内容表 503
10.1.6 格式化文本 506
10.1.5 产生节头 506
10.1.7 建立产生规则 509
10.1.8 产生交叉引用 512
10.1.9 过滤出不需要的东西 514
10.1.10 样板文本 514
10.1.11 研究人员列表 515
10.1.12 改变后用于XSLT及XPath规 515
范的样式表 515
10.2.1 数据模型以及它的XML表示 516
10.1.13 小结 516
10.2 家谱 516
10.2.2 显示家谱数据 518
10.2.3 将它结合起来 525
10.2.4 把GEDCOM文件转换 533
为XML 533
10.2.5 小结 535
10.3 马踏棋盘样式表 535
10.4 小结 547
附录A MSXML3 549
附录B Oracle 592
附录C Saxon 607
附录D Xalan 629
附录E 其他产品 650
附录F TrAX:XML的转换API 667
附录G 术语表 693