第1篇 XML基础概念
第1章 XML的特征及应用场合简介3
1.1 XML的特征3
1.1.1 打开第1个XML文档3
1.1.2 XML特征之一:纯文本文档5
1.1.3 XML特征之二:支持各种文字语言6
1.1.4 XML特征之三:内容和形式分离6
1.1.5 XML特征之四:用嵌套标签表达语义7
1.1.6 XML特征之五:自由指定文档标签7
1.1.7 XML特征之六:可用规范约束的标签语汇7
1.1.8 XML特征之七:容易扩展8
1.1.9 XML特征之八:广泛的开发平台支持8
1.2 应用XML8
1.2.1 XML的适用情况8
1.2.2 XML的实际应用9
1.2.3 XML的缺点11
1.2.4 开发一般XML应用的步骤11
1.3 最常用的XML核心技术12
1.4 总结13
第2章 XML语法15
2.1 XML基本语法15
2.1.1 包含常用XML语法元素的XML文档15
2.1.2 XML声明以及编码声明16
2.1.3 元素18
2.1.4 属性20
2.1.5 文本与空白21
2.1.6 标记字符与实体引用22
2.1.7 CDATA片段22
2.1.8 字符引用23
2.1.9 注释24
2.1.1 0处理指令24
2.1.1 1良好格式25
2.2 元素和属性的选择25
2.2.1 选择元素标记数据27
2.2.2 使用属性标记数据28
2.3 总结29
第3章 XML名称空间30
3.1 名称空间的作用及其标记方法30
3.1.1 用于区分不同领域的概念31
3.1.2 标记法31
3.1.3 重要概念32
3.2 使用名称空间33
3.2.1 使用URI表示名称空间所属的概念33
3.2.2 名称空间的容器与作用范围35
3.2.3 默认名称空间36
3.3 总结37
第4章 XML数据结构38
4.1 逻辑数据结构与内存对象模型38
4.1.1 文档、元素、属性、文本
内容等结构抽象为节点38
4.1.2 节点关系之一:层次嵌套41
4.1.3 节点关系之二:线性顺序41
4.1.4 内存模型的实现43
4.2 物理数据结构与流式模型43
4.2.1 物理数据结构是逻辑数据结构的基础44
4.2.2 利用只进读写引擎处理大型文档45
4.2.3 流式引擎的实现46
4.2.4 内存对象模型与流式模型的比较47
4.3 选择适当的数据载体47
4.3.1 选择关系数据库48
4.3.2 选择平面文件或XML48
4.3.3 选择XML的场合50
4.4 总结52
第5章 XML路径查询技术53
5.1 XPath基本概念53
5.1.1 定位步骤54
5.1.2 上下文54
5.1.3 绝对路径表达式与相对路径表达式56
5.1.4 合并结果56
5.1.5 轴、节点选择和谓项56
5.2 使用SketchPath调试XPath58
5.3 常用XPath轴介绍60
5.3.1 默认的XPath轴60
5.3.2 属性轴和“@”缩略形式62
5.3.3 父轴和“..”缩写形式63
5.3.4 自身轴和“.”缩略形式64
5.3.5 后代轴与“//”缩略形式64
5.3.6 先代轴66
5.3.7 XPath节点轴一览表67
5.4 XPath中的节点类型67
5.5 常用XPath函数、运算符介绍68
5.5.1 常用节点函数68
5.5.2 常用字符串函数69
5.5.3 常用布尔函数71
5.5.4 数值函数73
5.5.5 XPath运算符74
5.6 常见XPath示例75
5.7 总结77
第2篇 XML核心技术
第6章 应用:使用内存模型编程处理XML文档81
6.1 内存模型的特点及一般操作81
6.1.1 创建模型的实例对象82
6.1.2 利用模型提供的方法或属性处理文档82
6.1.3 保存或关闭文档82
6.2 使用文档对象模型(DOM)处理文档83
6.2.1 类库提要83
6.2.2 使用文档对象模型生成XML文档86
6.2.3 加载XML文档91
6.2.4 处理XML文档的信息91
6.2.5 使用XPath定位节点105
6.2.6 需要注意的问题111
6.3 使用XPathNavigator模型处理数据115
6.3.1 创建XPathNavigator实例115
6.3.2 创建XPath导航器与IXPathNavigable接口118
6.3.3 使用XPath导航器访问文档119
6.4 使用LINQtoXML模型处理文档121
6.4.1 类库提要121
6.4.2 使用LINQtoXML模型处理文档128
6.4.3 小结LINQtoXML138
6.5 总结139
第7章 应用:使用流式模型处理XML文档140
7.1 模型的特点及一般操作140
7.1.1 一般操作步骤140
7.1.2 流式引擎的一般用途141
7.1.3 关闭读取器或编写器141
7.1.4 类库提要142
7.2 使用流式模型输出XML文档146
7.2.1 用XmlWriter写出内存模型的内容146
7.2.2 将普通数据直接写出为XML文档148
7.2.3 将DataReader的内容写出为XML文档151
7.2.4 使用XmlWriter向文档对象模型添加节点156
7.3 使用流式模型读取XML文档158
7.3.1 用XmlReader为内存模型加载文档158
7.3.2 结合XPath导航器模型读取文档子树159
7.3.3 跟踪XmlReader的分析过程160
7.3.4 使用XmlReader分析大型XML文档166
7.4 总结175
第8章 应用:XML序列化176
8.1 映射程序数据与XML数据176
8.1.1 数据建模176
8.1.2 双向数据映射177
8.1.3 代码实现177
8.1.4 应用步骤179
8.2 使用XmlSerializer序列化XML数据181
8.2.1 XmlSerializer的使用方法181
8.2.2 简单使用方法182
8.2.3 XmlSerializer的工作原理185
8.3 控制XmlSerializer的输出结果186
8.4 用XML序列化保存程序配置189
8.4.1 工作特点189
8.4.2 示例程序概述189
8.4.3 组织数据190
8.4.4 在界面上显示配置数据195
8.4.5 修改配置数据196
8.4.6 使用配置数据198
8.4.7 保存和加载配置数据199
8.4.8 序列化抽象类实例200
8.4.9 序列化无法序列化的结构或类实例203
8.4.1 0加密保护序列化的信息205
8.4.1 1调整序列化后的XML文档210
8.4.1 2实现IXmlSerializable接口控制序列化210
8.5 生成用于XML序列化的架构216
8.6 总结220
第9章 应用:XML与数据库的结合221
9.1 从关系数据创建XML文档221
9.1.1 配置示例数据库221
9.1.2 创建表格模型的XML文档225
9.1.3 创建关系嵌套模型的XML文档228
9.1.4 填充DataSet生成XML文档231
9.1.5 小结237
9.2 数据库中的XML文档237
9.2.1 创建XML数据字段238
9.2.2 向XML数据字段插入数据238
9.2.3 更改、查询XML字段的数据239
9.2.4 根据XML字段内容筛选结果242
9.2.5 提高XML数据字段的查询性能243
9.3 编程访问XML字段中的数据248
9.3.1 读取XML字段的内容248
9.3.2 更新XML字段的内容252
9.3.3 利用存储过程的XML参数254
9.4 总结261
第10章 XML架构262
10.1 架构的用途262
10.2 架构的基本形式与结构263
10.2.1 架构文档的基本形式263
10.2.2 XML元素的声明方式264
10.2.3 用于定义元素结构的复杂类型266
10.2.4 结构和元素出现次数的指定方法270
10.2.5 声明XML属性的方式271
10.2.6 用于定义元素、属性文本数据的简单类型273
10.2.7 小结278
10.3 实例文档与文档有效性279
10.3.1 为XML文档关联架构279
10.3.2 XML文档相对架构文档的有效性281
10.4 编程验证文档有效性282
10.4.1 使用文档对象模型验证文档282
10.4.2 使用XmlReader验证文档285
10.4.3 调用架构验证文档的实用程序288
10.4.4 小结293
10.5 高级架构设计技巧294
10.5.1 元素组与属性组296
10.5.2 通过派生重复利用已设计的类型300
10.5.3 重复利用已有的架构305
10.5.4 添加包含任何属性或子元素的容器309
10.5.5 惟一约束和引用约束314
10.5.6 小结320
10.6 从XML文档推断架构320
10.6.1 使用XMLSpy推断架构320
10.6.2 使用XmlSchemaInference类编程推断架构324
10.6.3 示例程序325
10.7 总结327
第11章 XSL转换330
11.1 XSLT基本概念330
11.1.1 XSLT的用途330
11.1.2 XSLT的工作方式331
11.1.3 XSLT文档的构成332
11.1.4 模板、结果树和上下文节点334
11.1.5 XSLT的处理流程337
11.2 编写执行XSL转换的工具程序342
11.2.1 程序界面及操作方式342
11.2.2 程序原理343
11.2.3 代码讲解343
11.3 XSLT指令提要346
11.3.1 匹配模板规则347
11.3.2 解决模板规则的冲突350
11.3.3 调用有模式的模板规则352
11.3.4 调用具名模板355
11.3.5 循环357
11.3.6 自动编号360
11.3.7 控制流程363
11.3.8 变量365
11.3.9 参数371
11.3.1 0重复使用已有的XSLT文档383
11.3.1 1动态生成结果树的元素和属性388
11.3.1 2使用简捷方式创建动态生成的属性值392
11.4 使用XSLT升级XML配置文件……393
11.4.1 设计XSLT文档393
11.4.2 开发升级配置文件功能的程序395
11.5 总结398
第12章 应用:XML与Web服务400
12.1 Web服务的工作原理及应用方案400
12.2 XML文档对象模型ActiveX对象401
12.2.1 MSXML的XML文档对象模型402
12.2.2 MSXML与.NET框架DOM的对比402
12.2.3 创建文档403
12.2.4 加载Web服务器上的XML文档404
12.2.5 小结408
12.3 XMLHttpRequest对象409
12.3.1 创建XMLHttpRequest对象409
12.3.2 XMLHttpRequest的属性和方法409
12.4 创建Web服务应用程序410
12.4.1 创建ASP.NETWeb服务网站411
12.4.2 Web服务方法的调用方式413
12.4.3 标记Web服务和Web服务方法416
12.4.4 添加新的Web服务位置417
12.4.5 接受参数的Web方法418
12.4.6 创建调用Web服务的窗体网页422
12.5 发布Web服务网站429
12.5.1 创建新的网站429
12.5.2 检查网站配置430
12.6 在.NET程序中调用Web服务431
12.6.1 使用WebRequest类发送HTTP请求432
12.6.2 实现简单的HTTPWeb服务客户端434
12.7 使用VisualStudio开发Web服务客户端438
12.7.1 添加基于.NET3.0的服务引用438
12.7.2 小结450
12.8 简单对象访问协议(SOAP)450
12.8.1 SOAP的基本概念450
12.8.2 SOAP消息的原理及工作过程453
12.8.3 捕获Web服务调用过程中遇到的错误454
12.8.4 自定义SOAP标头457
12.8.5 创建处理Web服务标头的客户端458
12.9 总结459
第3篇 XML典型案例
第13章 案例:使用XML和Web服务构建多层应用系统463
13.1 系统概述及架构设计463
13.1.1 传统业务架构463
13.1.2 具有Web服务层的系统架构465
13.1.3 Web服务层的问题466
13.1.4 Web服务的意义467
13.2 准备工作468
13.2.1 部署开发测试系统468
13.2.2 搭建系统框架并测试各部分的基本工作状态469
13.2.3 小结472
13.3 实现基本的登录验证功能473
13.3.1 了解现有资源473
13.3.2 确定实现身份验证及授权的位置474
13.3.3 实现登录及身份验证功能476
13.3.4 实现返回操作员及其所属组别信息的功能485
13.4 完善Web服务端的架构492
13.4.1 使用程序配置文件指定连接字符串492
13.4.2 使用XML文件配置数据库命令493
13.4.3 监视XML配置文件的改动506
13.4.4 加密应用程序配置文件512
13.4.5 小结515
13.5 面向新需求的设计与开发515
13.5.1 了解需求并制订开发计划516
13.5.2 在资源层作必要的开发、组织517
13.5.3 开发Web服务,实现所需功能518
13.5.4 测试并公开Web方法522
13.5.5 更新Web服务并开发客户端应用525
13.6 总结539