译者序 1
作者简介 1
前言 1
第一部分 基础篇 1
第1章 XML简介 1
1.1 XML的起源和目的 1
1.1.1 标记语言 1
1.1.2 SGML和文档标记语言 4
1.1.3 XML的目标 5
1.2 W3C规范的各个阶段 10
1.3 XML核心 11
1.3.1 XML1.0语法 11
1.3.2 描述和验证 14
1.3.3 XML命名空间 17
1.3.5 定位和链接XML 18
1.3.4 XML信息集合 18
1.3.6 转换XML 20
1.4 XML实际应用 21
1.4.1 XML词汇表 21
1.4.2 MXL编程 25
1.5 XML表示 26
1.6 用于服务器和数据库的XML 28
1.7 可扩展通信协议 29
1.8 电子商务的基础 30
1.9 语义和元数据 32
1.10 小结 33
1.11 参考资料 34
第2章 基本XML语法 36
2.1 标记语法 36
2.1.1 字符 37
2.1.2 简单命名 39
2.2 元素 40
2.2.2 空元素标记 41
2.2.1 标记 41
2.2.3 标记:一个简单的例子 42
2.3 XML数据结构 43
2.3.1 层次树结构 44
2.3.2 字符串 47
2.4 属性 47
2.5 字符数据 49
2.5.1 空白 49
2.5.2 行尾的处理 50
2.6 元素和属性的语法摘要 51
2.7 字符和实体引用 51
2.7.1 字符引用 51
2.7.2 实体引用 52
2.8 专用标记 54
2.8.1 注释 54
2.8.2 处理指令 55
2.8.3 CDATA节 56
2.9 文档结构 57
2.9.1 序言 57
2.9.2 主体 58
2.9.3 尾声 58
2.10 格式正规的XML文档 59
2.11 有效的XML文档 60
2.12 XML解析器 60
2.12.1 解析器级别 60
2.12.2 解析器实现 61
2.12.3 一些特殊解析器 62
2.12.4 解析器链接网站 63
2.12.5 XML语法小结 63
2.13 实例:简单的发货单 64
2.14 小结 66
第3章 深入的XML语法 67
3.1 进一步要考虑的问题 67
3.1.1 特殊属性 67
3.1.2 属性值规范化 70
3.2 现有标准的使用 71
3.2.1 XML1.0参考 71
3.2.2 ISO 73
3.2.3 Unicode 75
3.2.4 IETF 77
3.2.5 IANA 83
3.3 XML的命名空间 84
3.3.1 XML命名空间的概念 84
3.3.2 如何保持XML命名的惟一性 85
3.3.3 声明命名空间 87
3.3.4 默认命名空间 88
3.3.5 作用域 89
3.3.6 命名空间和属性 90
3.3.7 小结:命名空间 91
3.4 XML Base 91
3.5 实例:使用命名空间的发货单 93
3.6 小结 95
3.7 参考资料 95
第4章 XML信息集合 97
4.1 XML信息集合的概念 97
4.1.1 实体引用 98
4.1.2 基URI 98
4.2 信息项 98
4.2.1 文档信息项 98
4.2.2 命名空间信息项 99
4.2.3 元素信息项 99
4.2.4 属性信息项 100
4.2.5 字符信息项 101
4.2.6 注释信息项 101
4.2.7 处理指令信息项 101
4.2.8 CDATA开始和结束标记信息项 101
4.2.10 外部实体信息项 102
4.2.11 未解析实体信息项 102
4.2.9 内部实体信息项 102
4.2.12 未展开的实体引用信息项 103
4.2.13 实体开始和结束标记信息项 103
4.2.14 文档类型声明信息项 103
4.2.15 表示法信息项 104
4.3 小结 104
第5章 文档类型定义 105
5.1 为什么要验证XML的有效性 105
5.1.2 有效的XML 106
5.1.1 数据需要的描述和验证 106
5.1.3 文档类型定义 107
5.2 DTD结构 109
5.3 将DTD和XML数据关联 110
5.3.1 文档类型声明 110
5.3.2 内部和外部DTD子集 113
5.4 基本DTD声明 113
5.4.1 元素类型声明 114
5.4.2 属性声明 123
5.4.3 表示法:非XML数据 132
5.5 实体 133
5.5.1 已解析实体 134
5.5.2 未解析实体 134
5.5.3 实体引用 134
5.5.4 一般实体 136
5.5.5 参数实体 140
5.5.7 标准字符实体引用集 141
5.5.6 ISO和其他标准化实体集 141
5.6 条件部分 142
5.7 独立文档声明 145
5.8 有效性验证XML解析器 146
5.9 DTD的局限性 148
5.10
5.11 小结 153
第6章 XML Schema介绍 155
6.1 为什么模式很重要 155
6.1.1 W3C XML Schema的背景 156
6.1.2 W3C XML Schema的优点 157
6.1.3 选择一个解析器 159
6.2 使用XML Schema 160
6.2.1 主要组件 160
6.2.2 复杂类型 167
6.2.3 声明属性 171
6.2.4 内容模型 172
6.2.5 二级组件 174
6.2.6 雇员模式 181
6.3 创建自己的数据类型 182
6.3.1 数据类型的特征 183
6.3.2 派生和刻面 185
6.4 ToysCo实例 190
6.5 小结 198
第7章 其他Schema 199
7.1 早期的Schema建议 199
7.1.2 DT4DTD 200
7.1.1 DDML 200
7.1.3 SOX 201
7.1.4 XML-Data 202
7.2 XML-DATA简化 202
7.2.1 XDR Schema结构 203
7.2.2 XDR和XML Schema 214
7.2.3 实例--发货单的XDR Schema 217
7.2.4 XDR小结 221
7.3 可供选择的验证工具 221
7.4 RELAX 222
7.4.1 RELAX的结构 224
7.4.2 RELAX的元素 225
7.4.3 数据类型 234
7.4.4 实现 235
7.4.5 RELAX小结 235
7.5 TREX 236
7.5.1 TREX的元素 237
7.5.2 数据类型 249
7.5.3 TREX处理程序 250
7.5.4 TREX Schema 251
7.5.5 实例 252
7.5.6 TREX小结 262
7.6 Schematron 262
7.6.1 Schematron的结构 263
7.6.2 Schematron的元素 266
7.6.3 Schematron的实现 274
7.6.4 Schematron小结 276
7.7 小结 276
第8章 XML导航工具--XPath 277
8.1 XPath简介 277
8.1.1 XPath及其作用 278
8.1.2 XPath的工作原理 281
8.1.3 XPath数据模型 283
8.2 XPath表达式及定位路径 288
8.3 XPath语法 289
8.4 XPath函数 291
8.4.1 节点集合函数 291
8.4.2 布尔函数 292
8.4.3 数值函数 292
8.4.4 字符串函数 292
8.4.5 XPath语法的变化形式 293
8.4.6 非缩写的相对定位路径 294
8.4.7 非缩写的绝对定位路径 300
8.4.8 缩写的相对定位路径 301
8.4.9 缩写的绝对定位路径 303
8.5 XPath是XSLT的基础 304
8.6 XPath是XPointer的基础 305
8.7 展望XPath 306
8.7.1 XPath2.0 306
8.7.3 XPath和正规表达式 307
8.7.4 XPath和XQuery 307
8.7.2 XPath和XML Schema 307
8.8 小结 308
第9章 转换XML 309
9.1 XSLT的起源和目的 310
9.2 什么是转换 310
9.3 定位数据:XPath 312
9.3.1 定位路径 312
9.3.2 函数 315
9.4.1 SXLT的元素 316
9.3.3 在转换中使用XPath 316
9.4 转换数据:XSLT 316
9.4.2 完整列表 317
9.4.3 常用元素 317
94.4 XSLT编程风格 329
9.5 执行转换 332
9.5.1 在代码中转换 332
9.6 XSLT用于表示:XML转换成HTML的实例 334
9.5.2 Saxon 334
9.5.3 VBXML的XSL测试器 334
9.6.1 书籍目录源文档 335
9.6.2 输出结果 342
9.7 XSLT用于数据转换:XML之间转换的实例 342
9.7.1 转换 342
9.7.2 进一步处理 344
9.8 小结 344
第10章 文档片断、XLink和XPointer 346
10.1 XML文档片断交换 346
10.1.1 文档片断的使用 350
10.1.2 问题:Bare文档片断并不总是充分的 352
10.1.3 解决办法:上下文信息 353
10.1.4 实例 355
10.1.5 如何传输文档片断 357
10.1.7 小结 358
10.2.1 链接的概念 359
10.2 链接 359
10.2.2 W3C的规范:XLink 361
10.2.3 简单链接 362
10.2.4 扩展链接 364
10.2.5 LXink小结 379
10.3 XPointer 380
10.3.1 HTML指针 380
10.3.2 XPointer规范 381
10.3.3 如何指定文档片断标识符 382
10.3.4 XPointer中的错误 385
10.3.5 小结 385
10.4 结论 385
第二部分 编程篇 387
第11章 文档对象模型 387
11.1 文档对象模型的概念 387
11.1.1 XML文档结构 388
11.1.2 为什么使用DOM 389
11.1.3 实践中的考虑 391
11.1.4 DOM规范 392
11.1.5 现实世界中的DOM 404
11.1.6 特殊XML DOM实例:HTML DOM 404
11.2 使用DOM 407
11.2.1 DOM API 407
11.2.2 客户端和服务器端 408
11.2.3 DOM在出版过程中的使用方案 409
11.3.1 一个简单的客户端实例 412
11.3 使用DOM和XML的实例应用 412
11.3.2 另一个实例(使用Java) 417
11.3.3 DOM Level2 422
11.3.4 对核心规范的修改 422
11.3.5 视图规范 426
11.3.6 事件规范 426
11.3.7 样式规范 432
11.3.8 遍历和范围规范 432
12.2.2 选择哪一个 433
12.2.1 SAX和DOM的对比 433
11.3.9 一个快速实例 437
11.3.10 DOM Level3 439
11.4 DOM和XML的未来 440
11.5 小结 440
12.2 对SAX的需求 442
第12章 SAX2 442
12.1 概述 442
12.3 理解SAX 444
12.4 设置环境 444
12.5 装载阅读器 446
12.6 内容处理程序 448
12.7 错误处理程序 455
12.8 DTD处理程序 458
12.9 有效性验证 458
12.10 默认处理器 459
12.11 常见缺陷 459
12.11.2 文本数据 460
12.11.3 没有预读 460
12.11.1 属性的顺序 460
12.12 实例 461
12.12.1 获得数据 461
12.12.2 字数计数器 466
12.12.3 使用过滤器 469
12.13 小结 477
第13章 基于模式的程序设计 478
13.1 简短的历史 479
13.2 基于模式程序设计的目标 481
13.2.1 代码明晰 482
13.2.2 更好的编程模型 482
13.2.3 正式方法 483
13.2.4 描述性语言的最佳使用 483
13.3 基于模式的程序设计实践 484
13.3.1 XML和XSLT 484
13.3.2 MSXML3.0 485
13.3.3 文档-视图-控制器编程 485
13.3.4 实现 487
13.4 现有的XML树实例 490
13.4.1 XML字母表的动态指南 490
13.4.2 模型:XML文档 491
13.4.3 客户端 493
13.4.4 服务器端 505
13.5 学过的课程 513
13.6 接口过程和描述性代码 513
13.7 状态机 514
13.7.1 Petri网 514
13.7.2 使用Petri网的SBP应用的形式 515
13.7.3 分布式系统 519
13.7.4 MVC是最后的单词吗 519
13.8 小结 520
第三部分 XML数据篇 521
第14章 数据建模 521
14.1 数据建模简介 521
14.1.1 信息建模 522
14.1.2 静态信息模型 523
14.1.3 动态建模 527
14.1.4 选择动态模型 530
14.2 设计XML文档 530
14.2.1 用于消息的XML 531
14.2.2 用于永久性数据的XML 533
14.2.3 一般设计问题 534
14.3 编写模式 549
14.3.1 模式库 550
14.3.2 DTD和Schema能够表示的约束 551
14.3.3 命名空间 558
14.3.4 元素与类型 560
14.3.5 局部声明和定义与全局声明和定义 562
14.3.6 解释我们的模式 565
14.3.7 小结 566
15.1 简介 567
15.1.1 数据绑定的概念 567
第15章 XML数据绑定 567
15.1.2 XML数据绑定 568
15.1.3 简单的数据绑定概念 568
15.1.4 数据对象 569
15.1.5 API存在什么问题 570
15.1.6 数据绑定框架需求 576
15.2 用Castor进行XML数据绑定 576
15.2.1 用Castor内置的自省 577
15.2.2 使用Castor映射文件 582
15.2.3 使用Casotr的源代码生成器 592
15.3 使用XSLT进行XML数据绑定 604
15.3.1 创建对象模型的可表示视图 604
15.3.2 模式转换 604
15.4 用XML数据绑定代替对象序列 608
15.4.1 跨系统数据共享 608
15.4.2 数据可访问性 608
15.4.3 执行性能 609
15.4.4 另外一些不同点 610
15.4.5 结论 611
15.5 小结 611
15.6 资源 612
第16章 查询XML 613
16.1 W3C XML查询语言 614
16.1.1 需求 614
16.1.2 使用案例 615
16.1.3 数据模型 615
16.1.4 代数学 616
16.1.5 XQuery 616
16.1.6 查询实例 618
16.2 XQuery和XSLT的比较 623
16.3 小结 624
第17章 案例研究:数据库和XML 625
17.1 业务问题 625
17.2 提议体系结构 626
17.3 分析数据 627
17.4 显示一份简历:显示代码 630
17.5 插入或更新一份简历:实现编辑的代码 634
17.6 查询库:查询代码 646
17.7 进一步改进 651
17.8 小结 652
第四部分 表示篇 653
第18章 XML的图形化表示 653
18.1 基于XML的图形和动画技术 654
18.2 SVG与常见Web图形的区别 655
18.3 可缩放矢量图形概述 657
18.4 SVG元素概述 657
18.5 SVG查看器 661
18.6 水平条状图 663
18.7 交互式的条状图 668
18.8 在SVG中使用CSS 674
18.9 用XSLT创建SVG 678
18.10 用XSLT创建坚直条状图 681
18.11 在XSL-FO中结合SVG 688
18.12 生成SVG的一些商业工具 690
18.13 小结 694
18.14 在线资源 694
第19章 VoiceXML 695
19.1.3 表示层 698
19.1.2 语音层 698
19.1.1 硬件层 698
19.1 语音应用程序的体系结构 698
19.1.4 中间件 699
19.1.5 数据层 699
19.1.6 语音应用中的请求--响应过程剖析 700
19.2 VoiceXML基础 701
19.2.1 表单 701
19.2.2 菜单 704
19.2.4 链接 705
19.2.5 事件 705
19.2.3 直接对话框和混合自发的比较 705
19.2.6 对象 706
19.2.7 多文档应用 706
19.3 一个实例 707
19.4 VoiceXML的局限性 708
19.5 其他方案 709
19.6 VoiceXML资源 709
19.7 小结 709
第20章 XSL格式化对象:XSL-FO 711
20.1 XSL-FO概述 715
20.2 XSL-FO和CSS的比较 720
20.3 XSL-FO工具 720
20.4 创建简单的XSL-FO文档 723
20.4.1 创建简单的包括列表的XSL-FO文档 727
20.4.2 创建简单的XSL-FO表格 732
20.5 创建简单的XSL-FO发货单 735
20.6 使用XSL-FO生成PDF文档 740
20.7 在SVG中使用XSL-FO 741
20.7.1 使用XSL格式化程序作为XSL-FO的Web浏览器 744
20.7.2 展望未来 747
20.8 小结 748
第五部分 XML元数据篇 751
第21章 案例研究:生成一个站点索引 751
21.1 什么是站点索引 752
21.1.1 索引实例 752
21.1.2 词汇表与页面标记设计 752
21.1.3 词汇表 753
21.1.4 用于索引的页面标记 755
21.1.5 索引器和生成器 755
21.2 HTML实例 757
21.2.1 实例网站 757
21.2.2 读取源文档 758
21.2.3 词汇表 758
21.2.4 生成的索引页面 762
21.2.5 索引转化到HTML 767
21.3 XML源文档 774
21.4 索引生成器组件 774
21.4.1 逻辑关系分析 775
21.4.2 物理设计 775
21.5 运行生成器 777
21.5.1 运行词汇表程序 777
21.5.2 运行IndexingSpider程序 778
21.5.3 运行BrowsableIndex程序 780
21.6 发布 781
21.7 小结 781
第2章 RDF 783
22.1 元数据简介 783
22.1.1 网页中的元数据 785
22.1.2 Dublin Core 786
22.2.1 元数据模型 790
22.2 RDF:XML元数据标准 790
22.2.2 RDF语法 795
22.3 小结 842
第23章 RDF编码实例和RDDL 843
23.1 RDF的应用:注释 843
23.1.1 Annotea 843
23.1.2 构建注释服务器 848
23.2 RDF解析器 849
23.2.2 XSLT样式表 851
23.2.1 解析器的输出 851
23.2.3 事件驱动的RDF解析器 855
23.3 RDF DOM或API 861
23.4 RDF数据仓库 862
23.5 查询元数据存储 864
23.5.1 查询RDF数据存储 864
23.5.2 使微软索引服务器返回RDF语法 866
23.6 结论 874
23.7 RDF和XML中的命名空间 874
23.7.1 资源目录描述语言 875
23.7.2 RDDL实例 879
23.8 小结 882
第六部分 XML在B2B中的应用 883
第24章 SOAP 883
24.1 SOAP简介 883
24.1.1 SOAP诞生之前 884
24.1.2 SOAP消息 884
24.1.3 WSDL概述 894
24.2.1 将HTTP作为标准同步协议使用 896
24.2 SOAP绑定到传输协议 896
24.2.2 通过SMTP和MIME的异步通信 897
24.2.3 其他传输机制 899
24.3 SOAP的普通实现 900
24.3.1 Apache SOAP及IBM网络服务工具包 900
24.3.2 Microsoft的SOAP工具包、Biztalk服务器以及.NET中的网络服务 901
24.3.3 Perl和SOAP::Lite 901
24.4.1 服务器端应用的实现 902
24.4 通过HTTP的同步SOAP实例 902
24.4.2 客户端应用的实现 907
24.5 通过SMTP的异步SOAP例子 917
24.5.1 发货单服务器--通过SMTP的Microsoft SOAP客户端 917
24.5.2 执行服务器--通过SMTP的Apache/IBM Java服务器 922
24.6 XML协议 927
24.7 小结 929
第25章 利用Microsoft BizTalk Server实现B2B 931
25.1 B2B商业需求 931
25.1.1 数据表示 932
25.1.2 消息传递 932
25.1.3 业务过程建模 933
25.2 一些解决方案 934
25.2.1 用XML表示数据 934
25.2.2 Internet通信协议 934
25.2.3 B2B框架 935
25.3.1 数据表示 936
25.3 微软BizTalk服务器 936
25.3.2 消息服务 939
25.3.3 Orchestration和XLANG调度程序 943
25.3.4 跟踪 946
25.3.5 BizTalk服务器的扩展能力 946
25.3.6 消除易混淆的地方 948
25.4 XYZ:B2B BizTalk样例 949
25.4.1 业务问题 949
25.4.2 消息 950
25.4.3 映射 954
25.4.4 计划 956
25.4.5 将计划投入运行 968
25.5 小结 971
第26章 电子商务集成 973
26.1 电子商务简介 973
26.2 集成问题和解决方案 977
26.2.1 集成购买订单 979
26.2.2 模式转换 988
26.2.3 转换中的业务规则 997
26.2.4 解决方案体系结构 999
26.3 实例:提交一个PO(MS XML解析器) 1007
26.4 小结 1013
第27章 B2B的未来:WSDL和UDDI 1015
27.1 简介 1015
27.2 WSDL 1015
27.2.1 WSDL:理论 1016
27.2.2 生成WSDL 1017
27.2.3 使用IBM的Java生成WSDL 1028
27.2.4 WSDL实践 1033
27.2.5 鸡和蛋 1038
27.3 UDDI 1038
27.3.1 UDDI概念 1038
27.3.2 UDDI查询 1039
27.3.3 发布到UDDI 1044
27.4 小结 1051