XML入门经典(第5版)是由作者福思特 (Joe Fawcett)/奎思 (Liam R.E.Quin)/艾尔斯 (Danny Ayers) 所著的一本书。本书主要讲述了XML的构建规则等等!
内容简介
使用XML可以做太多的事情,从简单的数据传输到提供多通道的内容,《XML入门经典(第5版)》将帮助你开启XML之旅。它将带领你饱览一切你需要知道的有关这门强大语言的知识,包括它是什么,它如何工作,与之相关的技术都有哪些,以及如何应用它。你将很快了解如何操纵XML文档,在数据库中存储XML,提取数据,利用Web服务,甚至将其应用于网页和图像显示。在一个案例分析的协助下,你甚至会学到如何提高程序设计
作者简介
Joe Fawcett是卡普兰金融学院的软件开发主管,他是微软最早的xml的mvp之一。
liamr.e.quin是w3cxml活动领导者,xmlquery工作组以及xsl工作组的xsl-fo分组的联系人。dannyayers在talis从事由他们主办的语义网络平台的应用开发工作。
目录
第Ⅰ部分 XML介绍
第1章 什么是XML3
1.1 初识XML:数据描述和标记语言3
1.1.1 二进制文件4
1.1.2 文本文件4
1.1.3 标记语言简史5
1.2 XML的诞生5
1.3 XML的优点8
1.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章 良构的XML21
2.1 良构的定义21
2.2 在文本编辑器中创建XML22
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和URN46
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 Schema55
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
第Ⅱ部分 验证
第4章 文档类型定义69
4.1 文档类型定义的概念69
4.1.1 使用DTD70
4.1.2 使用jEdit70
4.1.3 详述DTD73
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 Schema97
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 Schema117
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.1141
5.6.1 宽松的规则141
5.6.2 (assert)142
5.7 小结143
第6章 RELAX NG与Schematron145
6.1 为什么需要更多的XML验证方法146
6.2 设置环境146
6.3 使用RELAX NG147
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 使用Schematron161
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中使用
Schematron170
6.5 小结173
第Ⅲ部分 处理
第7章 从XML中提取数据177
7.1 文档模型:XML的内存表示177
7.1.1 初识模型:DOM、XDM与PSVI177
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 XPath 2中的新表达式190
7.2.7 XPath函数194
7.2.8 XPath集合运算196
7.2.9 XPath与名称空间196
7.3 小结198
第8章 XSLT199
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-of)元素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.0238
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
第Ⅳ部分 数据库
第9章 XQuery257
9.1 XQuery、XPath和XSLT257
9.1.1 XQuery和XSLT258
9.1.2 XQuery和XPath258
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 无处不在的XQuery259
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.0279
9.6.1 group和window280
9.6.2 count子句281
9.6.3 try和catch281
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 了解数据库为什么需要能处理XML287
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 安装MySQL290
10.3.2 在MySQL中添加信息291
10.3.3 MySQL查询命令293
10.3.4 用MySQL更新XML数据297
10.3.5 在MySQL中使用XML298
10.3.6 MySQL客户端对XML的支持298
10.4 XML与SQL Server数据库299
10.4.1 安装SQL Server299
10.4.2 用XML显示关系型数据300
10.4.3 了解XML数据类型313
10.4.4 为xml数据类型创建索引316
10.4.5 SQL Server的W3C XML Schema323
10.4.6 处理带名称空间的文档324
10.5 XML与exist数据库325
10.5.1 下载并安装eXist325
10.5.2 交互操作eXist327
10.6 小结335
第Ⅴ部分 程序设计
第11章 事件驱动程序设计339
11.1 理解顺序处理339
11.2 在顺序处理中使用SAX340
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 XMLREADER366
11.3.1 XmlReaderSettings372
11.3.2 管理外部资源376
11.4 小结377
第12章 LINQ to XML379
12.1 LINQ的概念379
12.1.1 需要LINQ to XML的原因381
12.1.2 使用LINQ to XML382
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
第Ⅵ部分 通信
第13章 RSS、Atom和内容聚合409
13.1 聚合409
13.1.1 XML聚合410
13.1.2 聚合系统412
13.1.3 格式剖析414
13.2 使用新闻feed422
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 DCOM457
14.2.2 CORBA与IIOP458
14.2.3 Java RMI458
14.3 新的RPC协议——Web服务459
14.3.1 同源策略460
14.3.2 理解XML-RPC461
14.3.2 选择网络传输463
14.4 理解REST服务473
14.5 Web服务的堆栈技术477
14.5.1 SOAP477
14.5.2 WSDL478
14.5.3 UDDI479
14.5.4 相关规范479
14.6 小结481
第15章 SOAP和WSDL483
15.1 SOAP基础483
15.2 RPC新协议——SOAP484
15.2.1 SOAP与REST对比488
15.2.2 基本的SOAP消息488
15.2.3 比较复杂的SOAP交互496
15.3 定义Web服务语言——WSDL508
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章 AJAX521
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 与 Classes527
16.3 XMLHttpRequest函数528
16.4 使用HTTP方法与AJAX532
16.5 可达性考虑533
16.6 jQuery库534
16.6.1 学习jQuery535
16.6.2 领域专用语言(DSL)方法535
16.6.3 jQuery插件和附加库535
16.7 JSON与AJAX538
16.7.1 JSON示例538
16.7.2 JSON语法539
16.7.3 JSON与jQuery540
16.7.4 JSONP与CORS540
16.8 web服务器后端540
16.8.1 发送图像以及其他非文本数据541
16.8.2 性能541
16.8.3 服务器日志是朋友541
16.9 一个更复杂的例子542
16.10 小结546
第Ⅶ部分 显示
第17章 XHTML和HTML 5551
17.1 SGML的背景552
17.1.1 HTML和SGML552
17.1.2 XML和SGML552
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和XML579
17.5.7 分离样式和标记:低调的CSS579
17.6 Unobtrusive JavaScript技术580
17.7 HTML 5580
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和CSS591
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 5611
18.14 SVG和Web应用613
18.15 使用XQUERY或XSLT生成SVG图像613
18.16 资源614
18.17 小结614
第Ⅷ部分 案例分析
第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 XInclude622
19.5.3 方程和MathML623
19.5.4 XProc:一种XML管道语言625
19.5.5 XForms、REST和XQuery626
19.5.6 使用XSL-FO将对象格式化为PDF626
19.5.7 文档类XML标签628
19.5.8 人文科学类标签:TEI629
19.6 Hoy Books的网站629
19.7 小结633
附录A 习题参考答案635
附录B XPath函数655
附录C XML Schema数据类型673