第1章 XML简介 1
1.1 标记语言 1
1.2 XML的起源和目的 2
1.3 Web体系结构:过去与未来 4
1.3.1 传统Web体系结构 4
1.3.2 XML下的Web体系结构 5
1.4 XML基本特征 6
1.5 词汇表 8
1.5.1 科学词汇表 8
1.5.2 商业词汇表 9
1.5.3 法律词汇表 10
1.5.4 医学词汇表 11
1.5.5 计算机词汇表 11
1.6 XML技术的主要特性 12
1.6.1 格式正规的XML 12
1.6.2 文档类型定义 13
1.6.3 数据建模 14
1.6.4 文档对象模型 14
1.6.5 XML简单API 14
1.6.6 命名空间和模式 14
1.6.7 链接和查询 15
1.6.8 转换XML 15
1.6.10 服务器到服务器 16
1.6.9 XML和数据库 16
1.6.11 电子商务与XML 17
1.6.12 使用样式 18
1.6.13 无线应用协议和WML 18
1.7 XML的应用程序举例 19
1.8 小结 19
第2章 XML语法 20
2.1 标记语法 20
2.1.1 字符 20
2.1.2 命名 21
2.2 文档部分 22
2.3 元素 23
2.3.3 空元素标记 24
2.3.1 起始标记 24
2.3.2 结束标记 24
2.3.4 标记:一个简单的例子 25
2.3.5 文档元素 25
2.3.6 子元素 26
2.3.7 元素嵌套 27
2.3.8 字符串 29
2.4 字符数据 29
2.5 属性 30
2.5.1 特殊属性 31
2.5.2 空白 33
2.6.1 字符引用 34
2.6.2 实体引用 34
2.5.3 行尾的处理 34
2.6 字符引用和实体引用 34
2.7 处理指令 35
2.8 注释 36
2.9 CDATA部分 37
2.10 文档结构 38
2.10.1 序言 38
2.10.2 尾声 43
2.11 XML语法小结 43
2.12 格式正规的文档 44
2.13 解析器 45
2.13.1 事件驱动的解析器 45
2.13.3 解析器基准测试 46
2.13.2 基于树的解析器 46
2.14 书籍目录应用程序 47
2.15 小结 49
第3章 文档类型定义 51
3.1 为何需要正式的结构 51
3.1.1 文档域 52
3.1.2 验证文档的有效性 52
3.2 编写DTD:通用原则 52
3.2.1 将DTD与XML文档相关联 53
3.2.2 基本标记声明 55
3.3 正式的DTD结构 55
3.3.1 实体 56
3.3.2 元素 58
3.3.3 属性 61
3.3.4 条件部分 67
3.4 DTD的缺点 69
3.5 用于图书目录问题的DTD 70
3.5.1 图书目录问题的正式定义 70
3.5.2 对象关系问题 77
3.5.3 进一步讨论 78
3.6 小结 79
第4章 数据建模与XML 80
4.1 信息建模 80
4.1.1 静态模型和动态模型 81
4.1.3 从何处开始 82
4.1.2 文档和数据 82
4.1.4 静态信息模型 83
4.1.5 动态建模:对数据进行哪些处理 87
4.2 设计XML文档 90
4.2.1 XML的两种角色 90
4.2.2 将信息模型映射到XML 93
4.3 模式语言和表示法 101
4.3.1 模式的作用 101
4.3.2 将DTD作为模式 103
4.3.3 XML模式建议 109
4.4 小结 110
第5章 文档对象模型 111
5.1 什么是文档对象模型 111
5.1.1 XML文档结构 111
5.1.2 为何使用DOM 113
5.1.3 DOM规范 115
5.1.4 现实世界中的DOM 116
5.1.5 特殊的XML DOM实例——HTML DOM 117
5.2 使用DOM 120
5.2.1 DOM API 120
5.2.2 客户端和服务器端 121
5.2.3 DOM在出版过程中的应用 122
5.3 使用DOM和XML的应用实例 125
5.3.1 简单的客户端实例 125
5.3.2 更复杂的编程实例 133
5.4.1 W3C的工作 143
5.4 DOM和XML的未来 143
5.4.2 应用 144
5.4.3 数据库、模式和DOM 144
5.5 小结 144
第6章 SAX 1.0:XML简易API 145
6.1 事件驱动接口 145
6.2 SAX的由来 148
6.3 SAX的高级特性 165
6.3.1 可选择的源输入 166
6.3.2 处理外部实体 168
6.3.3 选择解析器 169
6.4 一些SAX设计模式 171
6.5.1 可配置的接口 187
6.5 SAX2.0 187
6.5.2 核心的特性和属性 188
6.6 小结 189
第7章 命名空间和模式 191
7.1 混合词汇表 192
7.1.1 分解问题 193
7.1.2 重用 193
7.1.3 多义性名称冲突 193
7.2 命名空间 195
7.3 定义和声明命名空间 196
7.3.1 声明一个命名空间 196
7.3.2 限定名 196
7.3.3 范围 197
7.4 在格式正规的书籍里使用命名空间实例 199
7.5 模式 201
7.5.1 与DTD有关的问题 201
7.5.2 一个对创建模式的帮助 203
7.6 W3C在XML模式方面的工作 209
7.6.1 DTD与XML模式的比较 210
7.6.2 结构 211
7.6.3 数据类型 219
7.7 简化了的XML Data 222
7.7.1 MSXML对命名空间和模式的支持 228
7.7.2 数据类型 229
7.8 图书目录中的变化 230
7.8.1 为什么烦恼 230
7.8.2 重铸DTD 231
7.8.3 模式协调 236
7.9 小结 240
第8章 链接和查询 241
8.1 XML信息集合 241
8.1.1 信息类型 241
8.1.2 信息集合的重要性 248
8.1.3 小结 250
8.2 链接 250
8.2.1 什么是链接 250
8.2.2 W3C规范:XLink 252
8.3.1 HTML指针 266
8.3 XPointer 266
8.3.2 XPointer规范 267
8.4 W3C XPath推荐标准 269
8.4.1 Location Step 269
8.4.2 Xpointer对XPath的扩展 276
8.4.3 XPointer错误 277
8.4.4 小结 277
8.5 XML程序段交换 278
8.5.1 什么是文档程序段 278
8.5.2 文档程序段的一些用途 279
8.5.3 问题:Bare文档程序段并不总是充分的 281
8.5.4 解决办法:环境信息 283
8.5.5 回顾实例 285
8.5.6 如何传输程序段 287
8.5.7 小结 289
8.6 查询 289
8.6.1 什么是查询语言 289
8.6.2 关系型数据库和XML文档之间的区别 291
8.6.3 XML查询语言的发展历史 295
8.6.4 使用XPath和XSLT查询XML文档 298
8.6.5 查询语言展望 309
8.7 小结 309
第9章 转换XML 310
9.1 为什么转换XML 311
9.1.1 在不同词汇表之间转换 311
9.1.3 不同的浏览器 312
9.1.2 动态转换 312
9.2 XSL 313
9.3 XSLT样式表命令 325
9.3.1 创建模板 325
9.3.2 处理空白 326
9.3.3 输出格式 326
9.3.4 合并样式表 327
9.3.5 嵌入样式表 328
9.4 使用XSLT的例子 328
9.4.1 命令的转换 329
9.4.2 循环 335
9.4.3 排序 336
9.4.4 条件处理 338
9.4.5 名称模板 341
9.4.6 编号方式 342
9.4.7 拷贝 344
9.5 使用DOM进行XML文档的转换 345
9.5.1 用DOM进行命令的转换 346
9.5.2 在运行时修改一个XSLT文档 349
9.6 XSL转换与DOM转换的比较 353
9.7 小结 354
第10章 XML和数据库 355
10.1 存储XML 355
10.1.1 持续性问题 355
10.1.2 文档管理 360
10.1.3 XML存储和数据库 362
10.1.4 结论 376
10.2 XML的交换 377
10.2.1 数据标准 377
10.2.2 查询标准 380
10.2.3 结论 388
10.2.4 你可能需要的标准 388
10.3 图书目录的例子 389
10.3.1 处理存在的数据和应用 389
10.3.2 图书目录模式 395
10.4 结论 420
第11章 服务器到服务器 421
11.1 XML的传送 421
11.1.2 XML和消息队列 422
11.1.1 基于FTP的XML传送 422
11.1.3 基于HTTP的XML 423
11.1.4 基于SMTP的XML 423
11.2 作为一种分布式组件模式的XML 424
11.2.1 消息传送和串行化 424
11.2.2 紧耦合系统和松耦合系统 428
11.2.3 通信方式 430
11.3 XML-RPC 431
11.3.1 为什么使用XML-RPC 432
11.3.2 XML-RPC适用于何处 433
11.3.3 XML-RPC规范——技术全瞻 434
11.3.4 XML-RPC的实现 440
11.3.5 书籍应用例子 444
11.3.6 到哪里去 464
11.4 SOAP 465
11.4.1 XML-RPC++ 465
11.4.2 实现 478
11.4.3 结论 493
11.5 WebDAV 493
11.6 小结 494
第12章 电子商务和XML 495
12.1 什么是电子商务 496
12.1.1 对客户直接销售 496
12.1.2 企业对企业交易 497
12.1.3 信息共享和内容联合 497
12.1.4 EDI——电子数据交换 498
12.2 在电子商务中应用XML 503
12.2.1 通常的错误概念 509
12.2.2 在电子商务中使用XML的感受 512
12.3 展望未来 513
12.3.1 发现和调解 514
12.3.2 容器 517
12.3.3 代理 519
12.3.4 模板 520
12.4 理论转化为实现 521
12.5 电子商务解决方案 521
12.6 行业方案 521
12.6.1 纵向行业解决方案的关键 522
12.6.2 旅游 523
12.7 人力资源 524
12.7.1 HR-XML 524
12.7.2 健康 532
12.8 cXML——纵向行业的一个详细例子 535
12.8.1 为什么有cXML 535
12.8.2 cXML协议规范 536
12.8.3 消息传输 540
12.9 第1步——横向行业 546
12.9.1 ASC X12 546
12.9.2 XML-EDIFACT 547
12.10 第一个横向步骤 549
12.9.3 电子商务XML工作组 549
12.10.1 BizTalk标记规范 550
12.10.2 规范的目标和当前的限制 550
12.10.3 文档结构 551
12.10.4 一个用于Wrox书店的BizTalk文档 557
12.10.5 BizTalk Jumpstart工具包简介 561
12.10.6 BizTalk服务器 562
12.11 小结 565
第13章 样式XML 567
13.1 解释的位置 567
13.2 客户端的XML转换 568
13.3 解释模型 568
13.3.1 视觉解释 569
13.3.2 语音解释 570
13.3.3 如何将样式表链接到XML文档上 571
13.3.4 规则语言 571
13.3.5 CSS 572
13.3.6 XSL 592
13.3.7 用XSL解释XML 594
13.3.8 DSSSL 611
13.3.9 Omnimark 614
13.4 小结 616
第14章 无线应用协议 617
14.1 新客户介绍 617
14.2 了解无线环境 621
14.2.1 服务 621
14.2.2 无线网络 622
14.2.3 WAP如何解决无线网络应用遇到的问题 624
14.3 介绍WML 626
14.3.1 怎样将第一份文档传送到电话上 626
14.3.2 WML文档的结构 627
14.3.3 通用属性 629
14.3.4 WML包括什么 630
14.3.5 Meta信息 630
14.3.6 基本字符、表格和演示 631
14.3.7 使用计时器 633
14.3.8 事件处理器 634
14.3.9 使用变量 635
14.3.10 任务和菜单 637
14.3.11 客户端模板 641
14.3.12 表单数据 643
14.3.13 图像 646
14.4 在服务器上生成WML 646
14.5 WROX的WML应用 648
14.6 WML脚本 651
14.6.1 基本概念 652
14.6.2 字节码 652
14.6.3 如何从WML上调用脚本函数 652
14.7 脚本库 653
14.7.1 决定浏览器的状态——WML Browser脚本库 653
14.7.2 Dialogs库 654
14.7.4 浮点数 655
14.7.3 特定的语言函数 655
14.7.5 字符串 656
14.7.6 URL 657
14.8 如何得到更多的信息 660
14.9 小结 660
第15章 实例研究1——数据双重性 662
15.1 商业需求 662
15.2 系统要求 662
15.3 设计时间:让我们开始吧 662
15.4 实现方法概述 663
15.5 建立数据库 665
15.6 提供XML功能的ASP 665
15.7 客户端页面 668
15.8 “以编号浏览”XSL样式表 676
15.9 “以名字浏览”XSL样式表 678
15.10 激活XSL样式表 679
15.11 问题:保持树的同步 680
15.12 小结 683
第16章 实例研究2——XML和分布式应用程序 684
16.1 目前的弱点 684
16.2 构建网络应用程序的五条原则 685
16.2.1 从粗粒度服务构建应用程序 686
16.2.2 通过查询目录发现服务 687
16.2.3 将服务提供为自描述数据 688
16.2.4 服务是短暂的 689
16.2.5 服务必须可扩展,且能够降低对外部的要求 690
16.3 商业实例 691
16.4 应用程序设计 692
16.4.1 应用程序的组织 694
16.4.2 程序员服务客户 694
16.4.3 服务 695
16.4.4 交换词汇表 696
16.5 实现 697
16.5.1 定位服务 698
16.5.2 管理数据绑定 699
16.6 输入和编辑程序员信息 700
16.6.1 客户端 700
16.6.2 服务器端 701
16.6.3 用于插入程序员信息的完整客户端代码 704
16.6.4 用于插入程序员信息的完整服务器端代码 705
16.7 搜索程序员信息 707
16.7.1 客户端 707
16.7.2 服务器端 709
16.8 清除程序员表单 710
16.9 输入程序员成果报告 711
16.9.1 客户端 711
16.9.2 服务器端 712
16.10 清除成果报告历史表单 714
16.11 获取程序员的成果历史 714
16.11.1 客户端 714
16.11.2 服务器端 716
16.12.3 重用的可能性 718
16.12.2 组件 718
16.12 经验教训 718
16.12.1 违反的开发原则 718
16.13 小结 719
第17章 实例研究3——图书目录信息服务 720
17.1 图书目录信息服务 721
17.1.1 系统概述 721
17.1.2 创建BCIS 732
17.2 小结 764
第18章 实例研究4——SOAP 765
18.1 追根溯源 765
18.2 SOAP Opera 770
18.2.1 OPERA客户端 771
18.2.2 OPERA服务器 780
18.2.3 订单输入应用程序 793
18.2.4 对象 796
18.3 小结 809
附录A XML 1.0规范 810
附录B IE 5 XML文档对象模型 847
附录C SAX 1.0:XML简单API 887
附录D IE 5 XML模式和数据类型 906
附录E IE 5 XSL引用 915
附录F CSS属性 927
附录G 安装XT 939
附录H 支持与勘误 940