第Ⅰ部分 XML介绍 3
第1章 什么是XML 3
1.1初识XML:数据描述和标记语言 3
1.1.1二进制文件 4
1.1.2文本文件 4
1.1.3标记语言简史 5
1.2 XML的诞生 5
1.3 XML的优点 8
3.1 XML规则 8
1.3.2数据的分层表示形式 9
1.3.3通用性 10
1.4 XML的实际应用 11
1.4.1数据和文档 11
1.4.2 XML场景 12
1.4.3 XML技术 13
1.5小结 19
第2章 良构的XML 21
2.1良构的定义 21
2.2在文本编辑器中创建XML 22
2.2.1禁止的字符 22
2.2.2 XML序言 22
2.2.3创建元素 24
2.2.4属性 27
2.2.5元素与属性内容 28
2.2.6处理指令 32
2.2.7 CDATA节 32
2.3高级XML解析 34
2.3.1 XMl等价性 34
2.3.2空白处理 35
2.3.3错误处理 36
2.4 XML信息集 39
2.4.1文档信息项 39
2.4.2元素信息项 39
2.4.3属性信息项 40
2.4.4处理指令信息项 40
2.4.5字符信息项 40
2.4.6注释信息项 40
2.4.7名称空间信息项 40
2.4.8文档类型声明信息项 40
2.4.9未扩展实体引用信息项 41
2.4.10未解析实体信息项 41
2.4.11符号信息项 41
2.5小结 41
第3章 XML名称空间 43
3.1名称空间的定义 43
3.2需要名称空间的原因 44
3.3选择名称空间的方法 45
3.3.1 URL、URI和URN 46
3.3.2创建第一个名称空间 46
3.4声明名称空间的方法 47
3.4.1名称空间的作用域 50
3.4.2声明多个名称空间 50
3.4.3修改名称空间定义 52
3.5名称空间的实际应用 55
3.5.1 XML Schema 55
3.5.2多名称空间文档 55
3.6使用名称空间的时机 59
3.6.1何时需要使用名称空间 59
3.6.2何时不需要使用名称空间 60
3.6.3版本控制和名称空间 60
3.7常见的名称空间 61
3.7.1 XML名称空间 61
3.7.2 XMLNS名称空间 62
3.7.3 XML Schema名称空间 62
3.7.4 XSLT名称空间 62
3.7.5 SOAP名称空间 63
3.7.6 WSDL名称空间 63
3.7.7 Atom名称空间 63
3.7.8 MathML名称空间 63
3.7.9 Docbook名称空间 64
3.8小结 64
第Ⅱ部分 验证 69
第4章 文档类型定义 69
4.1文档类型定义的概念 69
4.1.1使用DTD 70
4.1.2使用jEdit 70
4.1.3详述DTD 73
4.1.4 DTD共享 76
4.2 DTD剖析 77
4.2.1元素声明 77
4.2.2属性声明 85
4.2.3实体声明 90
4.3 DTD的局限性 94
4.4小结 94
第5章 XML Schema 97
5.1 XML Schema的优点 98
5.1.1 XML Schema使用XML语法 98
5.1.2 XML Schema支持名称空间 98
5.1.3 XML Schema的数据类型 98
5.1.4 XML Schema的内容模型 99
5.1.5 XML Schema规范 99
5.2 XML Schema实践 99
5.3 XML Schema的定义 103
5.3.1 <schema>声明 103
5.3.2 <element>声明 107
5.3.3混合内容 115
5.3.4 <group>声明 115
5.3.5 <attribute>声明 117
5.3.6通讯录的XML Schema 117
5.3.7数据类型 123
5.3.8 <simpleType>声明 129
5.4创建一个来自多个文档的架构 133
5.4.1 <import>声明 134
5.4.2 <include>声明 137
5.5 XML Schema的开发文档 139
5.6 XML Schema 1.1 141
5.6.1宽松的规则 141
5.6.2 <assert> 142
5.7小结 143
第6章 RELAX NG与Schematron 145
6.1为什么需要更多的XML验证方法 146
6.2设置环境 146
6.3使用RELAX NG 147
6.3.1理解RELAX NG基础 147
6.3.2理解RELAX NG紧凑语法 152
6.3.3两种RELAX NG格式的转换 154
6.3.4约束内容 155
6.3.5在RELAX NG架构中复用代码 157
6.4使用Schematron 161
6.4.1理解Schematron基础 161
6.4.2选择Schematron版本 162
6.4.3理解基本过程 162
6.4.4编写Schematron基本规则 162
6.4.5创建Schematron文档 164
6.4.6向消息添加更多信息 165
6.4.7 Schematron约束取值 167
6.4.8 Schematron处理协约束 169
6.4.9在XML Schema中使用Schematron 170
6.5小结 173
第Ⅲ部分 处理 177
第7章 从XML中提取数据 177
7.1文档模型:XML的内存表示 177
7.1.1初识模型:DOM、XDM与PSVI 177
7.1.2一个样例DOM树 178
7.1.3 DOM节点类型 179
7.1.4 DOM节点列表 180
7.1.5 DOM的限制 180
7.2 XPath语言 181
7.2.1 XPath基础 181
7.2.2 XPath谓词:完整的故事 183
7.2.3 XPath步与轴 185
7.2.4 XPath表达式 186
7.2.5 XPath表达式中的变量 189
7.2.6 XPath2中的新表达式 190
7.2.7 XPath函数 194
7.2.8 XPath集合运算 196
7.2.9 XPath与名称空间 196
7.3小结 198
第8章 XSLT 199
8.1 XSLT的用途 200
8.1.1 XSLT作为声明性语言 200
8.1.2 XSLT作为功能性语言 201
8.2建立XSLT开发环境 202
8.2.1设置.NET版本的SAXON环境 202
8.2.2设置Java版本的Saxon环境 203
8.3基本的XSLT元素 204
8.3.1 <xsl:stylesheet>元素 205
8.3.2 <xsl:template>元素 206
8.3.3 <xsl:apply-templates>元素 209
8.3.4 <xsl:value-ot>元素 209
8.3.5 <xsl:for-each>元素 211
8.3.6推处理与拉处理 211
8.3.7 XPath在XSLT中的作用 211
8.3.8使用命名模板 213
8.3.9 <xsl:call-template>元素 216
8.3.10 XSLT中document()函数 217
8.3.11条件逻辑 222
8.3.12 <xsl:param>元素 226
8.3.13 <xsl:sort>元素 227
8.3.14 <xsl:copy>与<xsl:copy-of>元素 229
8.4在XSLT中复用代码 231
8.4.1 <xsl:include>元素 231
8.4.2 <xsl:import>元素 234
8.4.3 <xsl:template>Mode属性 234
8.5理解内置模板与内置规则 237
8.6使用XSLT 2.0 238
8.6.1理解XSLT 2.0中的数据类型 239
8.6.2创建自定义函数 239
8.6.3创建多个输出文档 243
8.6.4使用collection()函数 244
8.6.5 XSLT 2.0分组 245
8.6.6 XSLT 2.0处理非XML输入 248
8.7 XSLT与XPATH 3.0:未来展望 253
8.8小结 254
第Ⅳ部分 数据库 257
第9章 XQuery 257
9.1 XQuery、XPath和XSLT 257
9.1.1 XQuery和XSLT 258
9.1.2 XQuery和XPath 258
9.2 XQuery实践 259
9.2.1独立XQuery应用 259
9.2.2 SQL语句 259
9.2.3 Java或其他编程语言调用 259
9.2.4原生XML服务 259
9.2.5无处不在的XQuery 259
9.3 XQuery基础模块 262
9.3.1 FLWOR表达式、模块以及函数 262
9.3.2无默认上下文项的XQuery表达式 266
9.4查询表达式详解 266
9.4.1版本声明 267
9.4.2序体 267
9.4.3查询体 272
9.5一些可选的XQuery特性 278
9.5.1 XQuery和XPath全文索引 278
9.5.2 XQuery更新功能 279
9.5.3 XQuery脚本扩展 279
9.6即将到来的XQuery 3.0 279
9.6.1 group和window 280
9.6.2 count子句 281
9.6.3 try和catch 281
9.6.4 switch表达式 282
9.6.5函数项和高阶函数 283
9.6.6 JSON特性 284
9.6.7 XQuery、关联数据和语义网 284
9.7小结 284
第10章 XML与数据库 287
10.1了解数据库为什么需要能处理XML 287
10.2分析数据库所需的XML功能 288
10.2.1检索文档 289
10.2.2在文档中检索数据 289
10.2.3更新XML文档 289
10.2.4以XML形式展示关系型数据 289
10.2.5以关系型数据的形式显示XML数据 290
10.3 XML与MySQL数据库 290
10.3.1安装MySQL 290
10.3.2在MySQL中添加信息 291
10.3.3 MySQL查询命令 293
10.3.4用MySQL更新XML数据 297
10.3.5在MySQL中使用XML 298
10.3.6 MySQL客户端对XML的支持 298
10.4 XML与SQL Server数据库 299
10.4.1安装SQL Server 299
10.4.2用XML显示关系型数据 300
10.4.3了解XML数据类型 313
10.4.4为xml数据类型创建索引 316
10.4.5 SQL Server的W3C XML Schema 323
10.4.6处理带名称空间的文档 324
10.5 XML与exist数据库 325
10.5.1下载并安装eXist 325
10.5.2交互操作eXist 327
10.6小结 335
第Ⅴ部分 程序设计 339
第11章 事件驱动程序设计 339
11.1理解顺序处理 339
11.2在顺序处理中使用SAX 340
11.2.1准备工作 341
11.2.2接收SAX事件 341
11.2.3处理无效内容 352
11.2.4 DTDHandler接口 361
11.2.5 EntityResolver接口 361
11.2.6了解特性与属性 362
11.3 XMLREADER 366
11.3.1 XmlReaderSettings 372
11.3.2管理外部资源 376
11.4小结 377
第12章 LINQ to XML 379
12.1 LINQ的概念 379
12.1.1需要LINQ to XML的原因 381
12.1.2使用LINQ to XML 382
12.2创建XML文档 384
12.2.1创建带名称空间的文档 386
12.2.2创建带有前缀名的名称空间的文档 387
12.3从XML文档中提取数据 387
12.4修改文档 394
12.4.1添加内容 394
12.4.2删除文档中的内容 395
12.4.3更新和替换文档中的内容 396
12.5转换文档 397
12.6 VB.NET的XML属性 399
12.6.1 VB.NET的XML文本 399
12.6.2 VB.NET的坐标轴属性 402
12.6.3在VB.NET中管理名称空间 404
12.7小结 404
第Ⅵ部分 通信 409
第13章 RSS、Atom和内容聚合 409
13.1聚合 409
13.1.1 XML聚合 410
13.1.2聚合系统 412
13.1.3格式剖析 414
13.2使用新闻feed 422
13.2.1新闻阅读器 423
13.2.2数据质量 423
13.3一个简单的聚合器 423
13.3.1 feed模型 424
13.3.2程序流程 426
13.3.3实现程序 426
13.3.4用XSLT转换 RSS格式 443
13.4几个有用的网站地址 452
13.5小结 453
第14章 Web服务 455
14.1什么是远程过程调用 455
14.2 RPC协议 456
14.2.1 DCOM 457
14.2.2 CORBA与IIOP 458
14.2.3 Java RMI 458
14.3新的RPC协议——Web服务 459
14.3.1同源策略 460
14.3.2理解XML-RPC 461
14.3.2选择网络传输 463
14.4理解REST服务 473
14.5 Web服务的堆栈技术 477
14.5.1 SOAP 477
14.5.2 WSDL 478
14.5.3 UDDI 479
14.5.4相关规范 479
14.6小结 481
第15章 SOAP和WSDL 483
15.1 SOAP基础 483
15.2 RPC新协议——SOA 484
15.2.1 SOAP与REST对比 488
15.2.2基本的SOAP消息 488
15.2.3比较复杂的SOAP交互 496
15.3定义Web服务语言——WSDL 508
15.4.1 <definitions> 509
15.4.2 <types> 509
15.4.3 <messages> 509
15.4.4 <portTypes> 510
15.4.5 <binding> 510
15.4.6 <soap:body> 512
15.4.7 <service> 513
15.4.8其他绑定方式 516
15.4小结 519
第16章 AJAX 521
16.1 AJAX概述 521
16.1.1 AJAX提供反馈 521
16.1.2使用AJAX加载未完成数据 522
16.1.3 AJAX执行异步操作 522
16.2 JavaScript简介 523
16.2.1 Web浏览器控制台 523
16.2.2值、表达式与变量 524
16.2.3控制流语句 526
16.2.4 Properties、Objects、Functions与Classes 527
16.3 XMLHttpRequest函数 528
16.4使用HTTP方法与AJAX 532
16.5可达性考虑 533
16.6 jQuery库 534
16.6.1学习jQuery 535
16.6.2领域专用语言(DSL)方法 535
16.6.3 jQuery插件和附加库 535
16.7 JSON与AJAX 538
16.7.1 JSON示例 538
16.7.2 JSON语法 539
16.7.3 JSON与jQuery 540
16.7.4 JSONP与CORS 540
16.8 Web服务器后端 540
16.8.1发送图像以及其他非文本数据 541
16.8.2性能 541
16.8.3服务器日志是朋友 541
16.9一个更复杂的例子 542
16.10小结 546
第Ⅶ部分 显示 551
第17章 XHTML和HTML 5 551
17.1 SGML的背景 552
17.1.1 HTML和SGML 552
17.1.2 XML和SGML 552
17.2开放式Web平台 553
17.3 XHTML简介 554
17.3.1 XHTML的<html>元素 554
17.3.2 XHTML的<head>元素 555
17.3.3 XHTML的<body>元素 557
17.3.4更多有关高级HTML的主题 567
17.4 XHTML和HTML:问题以及解决方法 568
17.5级联样式表(CASCADING STYLE SHEETS,CSS) 569
17.5.1 CSS等级和版本 569
17.5.2 CSS一览 570
17.5.3 CSS选择器 572
17.5.4 CSS属性 574
17.5.5 CSS特殊规则 578
17.5.6 CSS和XML 579
17.5.7分离样式和标记:低调的CSS 579
17.6 Unobtrusive JavaScript技术 580
17.7 HTML 5 580
17.7.1 HTML 5的优点 580
17.7.2 HTML 5的注意事项 581
17.7.3 HTML 5中的新元素 581
17.8小结 582
第18章 可伸缩矢量图形 585
18.1可伸缩矢量图形和位图 585
18.1.1过程式图形 585
18.1.2声明式图形 586
18.1.3位图图像 586
18.1.4矢量图像 588
18.1.5 SVG图像 588
18.2 SVG图像模型 589
18.3 SVG和CSS 591
18.4 SVG工具 592
18.5 SVG基本内置图形 594
18.5.1矩形 595
18.5.2圆形 596
18.5.3椭圆形 596
18.5.4直线 597
18.5.5折线和多边形 597
18.5.6 SVG路径(SVG Path) 598
18.6 SVG转换和聚合 601
18.6.1转换 601
18.6.2聚合 602
18.7 SVG定义和元数据 602
18.7.1 SVG的<title>元素和<desc>元素 602
18.7.2 SVG的<metadata>元素 603
18.7.3 SVG的<defs>元素以及可重用内容 604
18.8视窗和坐标 604
18.9 SVG颜色和梯度 605
18.10在SVG中使用位图图像 607
18.11 SVG文本和字体 608
18.12实现SVG动画的4种方法 609
18.12.1同步多媒体集成语言(SMIL) 609
18.12.2脚本动画 610
18.12.3 CSS动画 611
18.12.4外部库文件 611
18.13 SVG和HTML 5 611
18.14 SVG和Web应用 613
18.15使用XQUERY或XSLT生成SVG图像 613
18.16资源 614
18.17小结 614
第Ⅷ部分 案例分析 617
第19章 案例分析:XML在出版业中的应用 617
19.1背景 617
19.2产品介绍:目前的工作流程 618
19.3引入一个全新的基于Web的工作流程 618
19.3.1协商 618
19.3.2编写项目文档 619
19.3.3原型设计 619
19.4创建新流程 619
19.4.1富有挑战性的条件 619
19.4.2新的工作流 620
19.4.3记录转变过程和用到的技术 620
19.4.4成本收益分析 621
19.4.5部署 621
19.5一些技术要点 622
19.5.1 XQuery和模块 622
19.5.2 XInclude 622
19.5.3方程和MathML 623
19.5.4 XProc:一种XML管道语言 625
19.5.5 XForms、REST和XQuery 626
19.5.6使用XSL-FO将对象格式化为PDF 626
19.5.7文档类XML标签 628
19.5.8人文科学类标签:TEI 629
19.6 Hoy Books的网站 629
19.7小结 633
附录A 习题参考答案 635
附录B XPath函数 655
附录C XML Schema数据类型 673