第一篇 XML与Java
第1章 强大的Java 3
1.1 Java的背景介绍 3
1.2 Java的技术特征 4
1.2.1 语言特点 4
1.2.2 Java的面向对象介绍 5
1.2.3 Java和C++比较 7
1.3 Java程序的运行与开发环境 11
1.3.1 Java运行环境 11
1.3.2 Java开发环境 12
1.4 Java程序设计基础 12
1.4.1 语言基础 12
1.4.2 类. 接口与包 13
1.4.3 字符串与数组 17
1.5 Java的技术应用 17
1.5.1 Java应用程序 17
1.5.2 Java小应用程序 17
1.5.3 JDBC 18
1.5.4 Servlet和JSP 21
1.5.5 JavaBeans 23
1.5.6 EJB 23
第2章 互联网时代的数据标准——XML语言 27
2.1 XML介绍 27
2.1.1 XML的发展之路 28
2.1.2 XML的特点 33
2.1.3 XML的应用简介 38
2.2 XML语法 40
2.2.1 语法基础 40
2.2.2 XML文档的构成 46
2.2.3 XML文档的元素 49
2.2.4 XML文档的属性 53
2.2.5 XML文档的实体 58
2.3 XML的命名空间 59
2.3.1 命名空间的表示法 59
2.3.2 命名空间的范畴 60
2.4 文档类型定义 60
2.4.1 文档类型定义介绍 61
2.4.2 DTD的设计 62
2.4.3 正式的DTD结构 65
2.4.4 DTD的缺点 68
2.5 XSL介绍 69
2.5.1 XSL简介 69
2.5.2 XSL文档 70
2.5.3 XSL样式模板 71
2.5.4 编写XSL文档 76
第3章 XML编程接口 79
3.1 DOM(文档对象模型) 79
3.1.1 DOM的介绍 79
3.1.2 DOM的层次模型 79
3.1.3 DOM的使用 81
3.2 SAX(XML简单应用程序接口) 120
3.2.1 什么是SAX? 120
3.2.2 Java的SAX API 121
3.2.3 SAX的事件模型 121
3.2.4 SAX的使用 123
第4章 Java与XML 139
4.1 JAXP编程 139
4.1.1 JAXP的介绍 139
4.1.2 使用JAXP 140
4.2 JDOM编程 153
4.2.1 理解JDOM 153
4.2.2 JDOM应用 154
第5章 XSLT和XPATH 159
5.1 XSLT概述 159
5.1.1 XSLT的设计目的 159
5.1.2 为什么需要XSLT 159
5.1.3 XSLT的特点 160
5.1.4 XSLT的机理 160
5.2 样式表结构 161
5.3 内容模式 164
5.3.1 根结点子元素 164
5.3.2 剥去空白域(Whitespace Stripping) 164
5.4 模板规则 164
5.4.1 模式 164
5.4.2 定义模板规则 165
5.4.3 应用模板规则 166
5.4.4 调用命名的模板 166
5.5 产生结果树 166
5.5.1 字面结果元素的产生 167
5.5.2 用xsl:element生成元素 167
5.5.3 xsl:attribute生成属性 167
5.5.4 命名属性集 168
5.5.5 产生文本 169
5.5.6 产生处理指令 169
5.5.7 产生注释 170
5.5.8 复制 170
5.5.9 计算生成的文本 171
5.5.10 编号(numbering) 171
5.6 循环 171
5.7 条件处理 173
5.7.1 xsl:if条件处理 173
5.7.2 xsl:choose条件处理 173
5.8 排序 174
5.9 变量和参数 175
5.10 输出 176
5.10.1 XML输出方法 177
5.10.2 HTML输出方法 177
5.10.3 文本输出方法 177
5.11 其他细节 178
5.11.1 消息(Message) 178
5.11.2 扩展(Extension) 178
5.11.3 退步(Fallback) 179
5.12 XPath 179
第6章 Java XML Pack 181
6.1 Java XML Pack简介 181
6.2 JAXM 181
6.2.1 核心 182
6.2.2 供应者管理工具 182
6.2.3 使用JAXM 182
6.3 JAXB 185
6.4 JAX-RPC 186
6.5 JAXR 186
第二篇 Web服务篇
第7章 Web服务概览 189
7.1 什么是Web服务 189
7.1.1 Web服务架构 189
7.1.2 Web服务的特征 190
7.1.3 Web服务的分类 190
7.1.4 Web服务堆栈 191
7.2 Web服务带来了什么 192
7.3 Web服务体系结构对比 193
7.3.1 Microsoft.NET 开发框架 193
7.3.2 Sun ONE开发框架 196
7.3.3 Sun ONE与.NET的战略对比 199
第8章 简单对象访问协议 203
8.1 SOAP初步 203
8.1.1 HTTP+XML+RPC+Serialization 204
8.1.2 XML-RPC 204
8.1.3 WDDX 205
8.1.4 SOAP:XML-RPC+WDDX 206
8.2 SOAP协议 207
8.2.1 SOAP术语 208
8.2.2 SOAP消息 209
8.2.3 SOAP编码 211
8.2.4 SOAP RPC表示 213
8.2.5 绑定到HTTP的SOAP 214
8.3 SOAP和现有技术的比较 215
8.3.1 CORBA 215
8.3.2 COM/DCOM 215
8.3.3 SOAP与CORBA. DCOM/COM的比较 216
第9章 应用Apache Soap进行编程 217
9.1 Apache Soap的获取 217
9.2 Apache Soap的安装. 配置和运行 218
9.2.1 Servlet容器(Tomcat 3.2.3)的安装 218
9.2.2 Java Mail API和JavaBeans Activation Framework的安装 221
9.2.3 XML Parser(Apache Xerces)的安装 222
9.2.4 Apache SOAP的安装 222
9.2.5 Apache Soap的运行 224
9.3 一个简单的SOAP程序 224
9.3.1 SOAP服务的编程. 224
9.3.2 SOAP服务的发布 225
9.3.3 客户端程序 226
9.3.4 例子的运行 227
第10章 深入Apache Soap编程 229
10.1 基础知识 229
10.1.1 SOAP服务 229
10.1.2 SOAP服务的发布 230
10.1.3 调用SOAP服务 246
10.1.4 Http Tunnel Tools 248
10.2 SOAP RPC编程 252
10.2.1 SOAP服务 252
10.2.2 SOAP HTTP Client 254
10.2.3 SOAP SMTP Client 256
10.3 SOAP Message编程 264
10.3.1 Message Service 265
10.3.2 SOAP Message Client 266
10.3.3 带有附件的消息 272
10.4 Script服务 278
10.5 EJB服务 284
10.6 COM服务 296
10.6.1 编写COM组件 297
10.6.2 客户端程序 299
10.7 使用复杂的数据类型 299
10.7.1 在服务器上注册新类型 300
10.7.2 在客户端注册新类型 308
10.7.3 使用复杂数据类型的例子 308
10.7.4 构造自己的(反)序列化器 323
10.8 定制SOAP消息传输层 330
10.8.1 使用HTTP代理 330
10.8.2 使用HTTPS 335
10.8.3 使用Transport Hooks 336
10.9 维护Session信息 339
10.10 在RPC中使用MIME类型 345
10.11 构造自己的Provider 352
10.12 Apache SOAP服务器配置 362
10.12.1 配置管理器的作用 362
10.12.2 配置管理器类的实现 362
10.12.3 在SOAP服务器上使用自定义的配置管理器 365
10.13 Axis简介 366
10.13.1 服务的发布 366
10.13.2 服务的调用 367
第11章 SOAP互操作 369
11.1 传输问题 369
11.2 XML的问题 370
11.3 SOAP自身的问题 370
第12章 Web服务描述语言 389
12.1 WSDL语法结构 389
12.2 WSDL工具 393
12.2.1 WSDL Generator Tool 394
12.2.2 Service Proxy Generator Tool 394
12.2.3 Service Implementation Template Generator Tool 394
第13章 通用描述. 发现和集成 395
13.1 UDDI商业注册 395
13.2 UDDI数据模型 395
13.2.1 商业实体信息 396
13.2.2 商业服务信息 397
13.2.3 绑定模板信息 397
13.2.4 技术规范信息 398
13.3 UDDI程序员API 399
13.4 UDDI4J 401
第14章 Web服务流语言 411
附录A SOAP V1.1协议规范 417
A.1 简介 417
A.1.1 设计目标 417
A.1.2 符号约定 417
A.1.3 SOAP消息举例 418
A.2 SOAP消息交换模型 419
A.3 与XML的关系 419
A.4 SOAP封装 420
A.4.1 SOAP encodingStyle属性 421
A.4.2 封装版本模型 421
A.4.3 SOAP头 421
A.4.4 SOAP体 422
A.4.5 SOAP头和体的关系 423
A.4.6 SOAP错误 423
A.4.7 SOAP错误代码 424
A.5 SOAP编码 424
A.5.1 XML中的编码类型规则 425
A.5.2 简单类型 427
A.5.3 多态accessor 429
A.5.4 Compound types复合类型 429
A.5.5 默认值 437
A.5.6 SOAP root属性 437
A.6 在HTTP中使用SOAP 438
A.6.1 SOAP HTTP请求 438
A.6.2 HTTP头中SOAPAction域 438
A.6.3 SOAP HTTP应答 439
A.6.4 HTTP扩展框架 439
A.6.5 SOAP HTTP举例 439
A.7 在RPC中使用SOAP 440
A.7.1 RPC和SOAP体 440
A.7.2 RPC和SOAP头 441
A.8 安全性考虑 441
A.9 SOAP封装举例 441
A.9.1 请求编码举例 441
A.9.2 应答编码举例 442
A.10 参考文献 444
附录B Web服务描述语言(WSDL)1.0 445
B.1 简介 445
B.1.1 WSDL文档示例 446
B.1.2 标记规则 447
B.2 服务定义 448
B.2.1 WSDL文档结构 448
B.2.2 类型 452
B.2.3 消息 453
B.2.4 端口类型 455
B.2.5 绑定 457
B.2.6 端口 458
B.2.7 服务 458
B.3 SOAP绑定 459
B.3.1 SOAP示例 459
B.3.2 SOAP绑定如何扩展 WSDL 461
B.4 HTTP GET和POST绑定 465
B.4.1 HTTP GET/POST示例 465
B.4.2 HTTP GET/POST绑定如何扩展WSDL 467
B.5 MIME绑定 468
B.5.1 MIME绑定示例 469
B.5.2 MIME绑定如何扩展WSDL 470
B.6 参考资料 472
B.6.1 有关URI的说明 472
B.6.2 WSDL示例的线上格式 473
B.6.3 扩展性元素的位置 473
B.6.4 架构 474
附录C UDDI技术白皮书 481
C.1 简介 481
C.1.1 概览 481
C.1.2 UDDI的商业注册与UDDI商业注册中心 481
C.1.3 使用UDDI 482
C.1.4 背景 482
C.1.5 UDDI——技术发现层 483
C.1.6 下一步 484
C.1.7 商业发现与UDDI 484
C.1.8 进一步的工作 484
C.2 技术概述 485
C.2.1 四种信息类型 485
C.2.2 商业实体信息:businessEntity元素 485
C.2.3 服务信息:businessService元素和bindingTemplate元素 486
C.2.4 规范描述的指针和技术标识 486
C.2.5 程序员API 487
C.2.6 构建于SOAP之上 487
C.2.7 查询API 488
C.2.8 UDDI调用模型 488
C.2.9 远程Web服务调用失败后的恢复 488
C.2.10 发布API 489
C.2.11 安全:识别与授权 489
C.3 其他信息 490
C.4 UDDI信息模型 490
C.5 资源 491
附录D UDDI执行白皮书 493
D.1 新的国际贸易环境 493
D.2 新的挑战 493
D.3 当前的解决方案 494
D.4 新的解决方案 494
D.5 UDDI计划 495
D.6 前景 495
D.7 总结 496