第Ⅰ篇 XML篇 2
第1章 XML 2
1.1 XML的起源 2
1.2 W3C介绍 3
1.3 关于XML的两个问题 4
1.4 XML与HTML的比较 6
1.4.1 XML将数据与显示分开 6
1.4.2 XML对文档的格式要求更加严格 7
1.4.3 XML有且只能有一个根元素 8
1.5 XML的编辑工具 8
1.6 XML文档 12
1.6.1 XML文档的结构 12
1.6.2 在XMLSpy中创建XML文档 14
1.6.3 XML声明 15
1.6.4 文档类型声明 16
1.6.5 元素 17
1.6.6 注释 21
1.6.7 处理指令 22
1.6.8 空白处理 23
1.6.9 行尾处理 23
1.6.10 语言标识 23
1.7 格式良好的XML 24
1.8 小结 25
第2章 DTD 26
2.1 在XML文档中引入DTD 27
2.2 DTD的结构 29
2.2.1 元素类型声明 30
2.2.2 实体声明 34
2.2.3 属性表声明 37
2.2.4 记号声明 46
2.3 在XMLSpy中创建DTD文档 46
2.4 有效的XML 47
2.5 XML处理器/解析器 48
2.6 小结 49
第3章 XML名称空间 50
3.1 声明名称空间 50
3.2 名称空间在元素和属性中的运用 52
3.2.1 名称空间在元素中的运用 52
3.2.2 默认名称空间 54
3.2.3 名称空间在属性中的运用 55
3.3 名称空间和DTD 56
3.4 小结 58
第Ⅱ篇 XML Schema篇 60
第4章 XML Schema初窥 60
4.1 XML Schema推荐标准 60
4.2 XML Schema文档一瞥 61
4.3 XML Schema与DTD的比较 62
4.4 术语明晰 64
4.5 XML Schema概述 65
4.5.1 元素和属性的声明 65
4.5.2 元素和属性的类型 65
4.5.3 简单类型 66
4.5.4 复杂类型 68
4.5.5 全局声明和局部声明 69
4.5.6 模式与名称空间 70
4.5.7 在实例中引用模式文档 75
4.5.8 注解 78
4.6 在XMLSpy中创建模式文档 79
4.7 模式文档的验证 80
4.8 小结 80
第5章 内置简单类型 81
5.1 基于字符串的类型 83
5.1.1 string 83
5.1.2 normalizedString 83
5.1.3 token 84
5.1.4 Name 85
5.1.5 NCName 85
5.2 数字类型 86
5.2.1 float和double(浮点数和双精度浮点数) 86
5.2.2 decimal(小数) 86
5.2.3 integer(整数) 87
5.3 日期和时间类型 88
5.3.1 date 88
5.3.2 time 88
5.3.3 dateTime 89
5.3.4 gYear 89
5.3.5 gYearMonth 90
5.3.6 gMonth 90
5.3.7 gMonthDay 90
5.3.8 gDay 91
5.3.9 duration 91
5.4 其他数据类型 92
5.4.1 boolean 92
5.4.2 anyURI 92
5.4.3 QName 92
5.5 小结 93
第6章 自定义简单类型 94
6.1 面(facet) 95
6.1.1 限制范围 95
6.1.2 限制长度 96
6.1.3 指定精度 97
6.1.4 枚举值 98
6.1.5 模式匹配 98
6.1.6 空白处理 99
6.1.7 固定面 99
6.2 原子类型 100
6.3 列表类型 100
6.3.1 定义列表类型 100
6.3.2 限制列表类型 102
6.4 联合类型 104
6.4.1 定义联合类型 105
6.4.2 限制联合类型 106
6.5 阻止简单类型的派生 107
6.6 小结 108
第7章 复杂类型 109
7.1 从简单类型到复杂类型 110
7.2 xs:attribute元素的use、default和fixed属性 110
7.3 anyType 112
7.4 纯元素内容 112
7.4.1 sequence组 113
7.4.2 choice组 115
7.4.3 all组 117
7.5 元素的出现指示符 118
7.6 元素的默认值和固定值 122
7.7 空元素 124
7.8 混合内容 125
7.9 元素组 125
7.10 属性组 127
7.11 通配符 129
7.11.1 元素通配符 129
7.11.2 属性通配符 133
7.12 小结 134
第8章 派生复杂类型 135
8.1 扩展派生复杂类型 136
8.1.1 扩展简单内容 136
8.1.2 扩展纯元素内容 137
8.1.3 扩展混合内容 140
8.1.4 扩展空内容 141
8.2 限制派生复杂类型 142
8.2.1 限制简单内容 142
8.2.2 限制纯元素内容 143
8.2.3 限制混合内容 145
8.2.4 限制空内容 147
8.3 在实例文档中使用派生类型 147
8.4 替换组 150
8.5 抽象元素和类型 152
8.6 控制派生类型的创建和使用 154
8.7 小结 157
第9章 一致性约束 158
9.1 unique约束 159
9.2 key约束 164
9.3 keyref约束 165
9.4 小结 167
第10章 引入其他的模式文档 168
10.1 包含 168
10.2 重定义 171
10.3 导入 172
10.4 小结 174
第Ⅲ篇 解析篇 176
第11章 使用DOM、SAX和JAXP解析XML文档 176
11.1 DOM、SAX和JAXP概述 177
11.2 使用DOM解析XML文档 178
11.2.1 DOM结构模型 178
11.2.2 DOM树中的节点类型 180
11.2.3 DOM解析器工厂和DOM解析器 186
11.2.4 JAXP的错误类和异常类 189
11.2.5 使用DOM解析XML文档的实例 190
11.3 使用SAX解析XML文档 203
11.3.1 SAX的处理机制 203
11.3.2 配置SAX解析器 207
11.3.3 SAX解析器工厂 208
11.3.4 SAX的异常类 210
11.3.5 ErrorHandler接口 212
11.3.6 使用SAX解析XML文档的实例 213
11.4 使用XML Schema来验证XML文档 224
114.1 模式工厂和验证 224
11.4.2 与解析API的集成 229
11.4.3 获取类型信息 229
11.5 小结 233
第12章 使用JDOM解析XML文档 234
12.1 下载并配置JDOM 235
12.2 JDOM API介绍 235
12.3 使用JDOM访问XML文档的实例 239
12.4 小结 241
第13章 使用dom4j解析XML文档 242
13.1 下载并配置dom4j 242
13.2 dom4j API介绍 243
13.3 使用dom4j访问XML文档的实例 247
13.3.1 使用XML Schema来验证XML文档 247
13.3.2 使用访问者模式遍历XML文档 249
13.3.3 使用dom4j的事件模型来访问XML文档 251
13.4 小结 254
第14章 解析名称空间 255
14.1 DOM和名称空间 256
14.2 SAX和名称空间 259
14.3 JDOM和名称空间 262
14.4 dom4j和名称空间 265
14.5 小结 268
第Ⅳ篇 XSLT篇 270
第15章 XSLT 1.0 270
15.1 XSLT概述 271
15.2 Xalan处理器 275
15.3 模板规则 276
15.4 〈xsl:apply-templates〉元素 277
15.5 〈xsl:value-of〉元素 278
15.6 〈xsl:for-each〉元素 281
15.7 匹配节点的模式 282
15.8 mode属性 284
15.9 内置的模板规则 285
15.10 对空白的处理 287
15.11 XPath语言 287
15.11.1 XPath上下文 287
15.11.2 位置路径 288
15.11.3 表达式 293
15.11.4 核心函数库 295
15.12 创建结果树 300
15.12.1 创建元素和属性 300
15.12.2 创建文本 305
15.12.3 创建处理指令 307
15.12.4 创建注释 307
15.12.5 复制节点 308
15.12.6 输出格式化的数字 309
15.13 条件处理 320
15.13.1 <xsl:if> 320
15.13.2 <xsl:choose> 321
15.14 排序 322
15.15 变量和参数 326
15.15.1 变量 326
15.15.2 参数 329
15.16 命名模板 330
15.17 合并样式表 331
15.17.1 导入样式表 332
15.17.2 包含样式表 333
15.18 模板规则冲突的解决 333
15.19 〈xsl:output〉元素 335
15.19.1 指定输出文档的格式 336
15.19.2 输出XML声明 336
15.19.3 输出文档类型定义 337
15.19.4 输出CDATA段 338
15.19.5 指定文档缩进 340
15.19.6 指定媒体类型 340
15.20 XSLT中的函数 340
15.21 数字格式化 341
15.22 查询和分组 343
15.23 处理多个输入文档 352
15.24 JAXP中的XSLT API 356
15.24.1 转换器工厂 356
15.24.2 Transformer和Templates 356
15.24.3 一个实例 358
15.25 在XMLSpy中创建样式表文档 360
15.26 小结 362
第16章 XSLT 2.0 363
16.1 Saxon处理器 364
16.2 XPath 2.0 365
16.2.1 一切都是序列 365
16.2.2 for表达式 366
16.2.3 条件表达式 367
16.2.4 限定性表达式 369
16.2.5 类型 371
16.2.6 日期和时间 372
16.2.7 函数 373
16.3 XSLT 2.0的新特性 375
16.3.1 分组 375
16.3.2 隐含文档节点(临时树) 381
16.3.3 使用〈xsl:result-document〉元素输出多个文件 383
16.3.4 〈xsl:value-of〉元素的改进 386
16.3.5 字符映射 386
16.3.6 自定义样式表函数 389
16.4 小结 390
第Ⅴ篇 XQuery篇 392
第17章 XQuery 392
17.1 XQuery简介 393
17.2 查看XQuery的查询结果 394
17.2.1 XMLSpy和Stylus Studio 394
17.2.2 Saxon 396
17.2.3 DataDirect XQuery 397
17.3 XQuery基础 398
17.3.1 处理模型 398
17.3.2 表达式上下文 398
17.3.3 数据模型 399
17.3.4 类型 400
17.3.5 注释 400
17.4 表达式 401
17.4.1 基本表达式 401
17.4.2 路径表达式 402
17.4.3 序列表达式 402
17.4.4 算术表达式 403
17.4.5 比较表达式 404
17.4.6 逻辑表达式 405
17.4.7 FLWOR表达式 406
17.4.8 有序和无序表达式 410
17.4.9 条件表达式 411
17.4.10 量化表达式 412
17.4.11 作用于序列类型的表达式 413
17.4.12 验证表达式 417
17.4.13 扩展表达式 418
17.5 查询的结构 419
17.5.1 主模块和库模块 419
17.5.2 版本声明 421
17.5.3 序言 421
17.5.4 设置器 422
17.5.5 名称空间声明 423
17.5.6 默认名称空间声明 424
17.5.7 模式导入 425
17.5.8 模块导入 426
17.5.9 变量声明 427
17.5.10 函数声明 430
17.5.11 选项声明 431
17.6 小结 432
第18章 在Java中使用XQuery——XQJ 433
18.1 XQJ简介 433
18.2 开发一个XQJ应用 434
18.3 对XQuery上下文的支持 439
18.4 映射XQuery数据模型 440
18.5 对XQuery类型系统的支持 441
18.6 XQMetaData接口 441
18.7 小结 442
附录A 快速掌握HTML 443