本书从初学者角度出发,以通俗易懂的语言,详实丰富的实例,介绍了与XML有关的各种主要技术。书中不仅详细阐述了XML的基本概念、语法规则、文档类型定义、级联样式表、可扩展样式表、解析器和数据库的集成等知识,最后还通过一个综合案例演示了XML在实际项目开发中的应用。
本教程注重基础、讲究实用、力求由浅入深,在讲解基本概念和基础知识的同时给出了大量实例,便于读者消化吸收所学内容。每章还包括了小结和习题,便于读者巩固所学的知识。本书可作为高等院校软件工程、计算机科学与技术等相关专业的研究生参考用书,也可作为相关专业的高年级本科教材,还可作为初学者学习XML、Android移动应用开发、JavaEE开发的培训教材。
物竞天择,适者生存——在以计算机与互联网技术为代表的IT时代,各种各样的新技术如雨后春笋般涌现,然而真正能够历经磨炼生存下来的却寥寥无几。毫无疑问,XML便是其中的佼佼者。XML是SGML的一个子集,保留了灵活性,去掉了复杂性。很快XML便获得了巨大的成功,XML标准开始突飞猛进地发展,大批的软件开发商争先恐后地采纳这个标准,这一切令人叹为观止。如今XML在IT领域已经拥有不可动摇的地位,很难想象有一个重要的应用程序不使用XML来保存它的配置文件或数据文件。
XML是由W3C定义的一种语言,是表示结构化数据的行业标准。XML在电子商务、移动应用开发、Web Service、云计算等技术和领域中起着非常重要的作用。这些名人曾这样评论XML。
●微软总裁比尔 ? 盖茨:XML将为每一种流行的编程语言带来一个语言革命,其影响力甚至超过HTML为演示世界带来的影响。
●微软CEO史蒂夫 ? 鲍尔默:XML的出现,对于信息技术的影响不亚于GUI和浏览器。
●IBM资深专家Goldfarb:我为XML感到骄傲,WWW正在变成以XML为基础。
XML是未来的发展趋势,无论是网页设计师还是网络程序员,都应该及时学习和了解,等待只会让你失去机会。
学习和掌握XML的理由如下。
●XML是一门年轻的技术。
●XML是最前沿的技术。
●XML是应用广泛的技术,其发展前景无可限量。
●XML是一门综合性很强的技术。
XML越来越热,关于XML的基础教程也随处可见,可是一大堆的概念和术语往往让人望而生畏。有些图书起点太高,初学者难以理解基本概念,一开始学习就困难重重,容易产生厌倦心理而放弃学习;有的图书又过于简单,读者学完之后还是不会做实际的事情,不能达到一定的高度。
概括起来,本书具有以下主要特点。
●注重基础,讲究实用,力求从入门到精通。
●充分体现案例教学。本书以易学易用为重点,例子实用、知识丰富、步骤详细、学习效率高,特别适合入门者。
●配有源代码,加速学习。本书的所有示例均在XML Spy 2013开发环境下调试通过,读者可直接下载所有例子的源程序,并通过教材中介绍的步骤学习要点。
本书在讲述XML基本概念的基础上,系统地介绍了XML技术中业已成熟的标准和应用技术,并给出了基于XML的应用实例。全书共分10章,各章的主要内容如下:
第1章是XML简介,讲述标记语言的发展、HTML的局限性、XML的实现机制、XML的优势与特点,并给出了XML文档范例。这一章还用不少的篇幅介绍了XML技术的应用领域与应用前景,以及与XML相关的各种技术。
第2章讲解XML的语法,包括XML文档的构成、XML文档的声明与注释、XML元素的组成与命名、XML元素属性的定义规则、特殊的CDATA文本段、XML命名空间的概念与应用等。XML的语法并不复杂,但必须遵守,只有符合这些语法规则的XML文档才是一个格式良好的XML文档。
第3章讲解文档类型定义DTD。介绍了DTD的基本结构,重点阐述如何使用DTD为XML文档建立语义约束,包括如何在DTD中定义元素及元素类型,分析了DTD所支持的各种属性类型,说明了如何在DTD中定义各种实体,指出了DTD的局限性及现状。
第4章讲解描述和约束XML文档的语言——XML Schema。对比DTD中存在的缺陷引出了Schema,以一个Schema文档为例,介绍Schema的基本结构,详细分析Schema中的简单类型和复杂类型,以及如何进行数据类型的定义、元素的定义和属性的定义,分析了Schema命名空间的作用,说明了验证XML文档有效性的两种方法。
第5章介绍如何使用CSS(层叠样式表)来格式化输出XML文档的内容。XML文档本身只包含数据而不包含这些数据的显示格式信息,然而利用简单的CSS技术就能实现将XML文档中的数据以设计者所设定的各种格式在浏览器中显示出来。
第6章讲解XSL(可扩展样式表)技术,利用该技术不仅能够把XML文档转换为HTML文档,实现在浏览器中的格式化显示,而且还可以将XML文档转换为其他各种基于文本的文档,以实现跨平台的数据共享和交换。
第7章详细展示XML文档的解析过程,包括DOM树模型、DOM的结构、DOM基本接口、DOM的节点访问和DOM对XML文档的相关操作等内容。DOM解析器的主要功能是检查XML文件是否有结构上的错误,剥离XML文件中的标记,读出正确的内容,并交给下一步应用程序处理。
第8章介绍一种高效的解析器——SAX解析器,包括SAX的优缺点、工作机制、事件处理器、SAX事件、常用接口、回调方法、SAX错误信息和SAX对XML文档的相关操作。在这一章中还比较了SAX与DOM两种截然不同的解析方式,并给出了将两者结合应用的具体实例。
第9章介绍了XML与关系数据及关系数据库的集成,阐述了数据库技术的发展、XML的数据交换及存取机制、在数据库技术中引入XML的原因以及二者的结合对数据交换的影响,并全面介绍了.NET平台下XML与关系数据库系统(以SQL Server 2005为例)互换数据所采用的各种技术,以及SQL Server 2005对XML的支持。
第10章通过一个综合性的实例,系统地介绍了DOM、SAX、CSS等多种XML技术的应用,演示了在.NET平台下利用XML进行实际项目开发的完整过程。
本书从XML的基础知识讲起,语言通俗易懂,并配有很多实例和插图,使读者对每一章所讲述的内容都能有深刻的理解并加以巩固,十分适合初学者和有一定XML基础的人员使用。
本书由胡静、常瑞、张青、郭纯一编写并由胡静统稿。此外,参加本书编写的人员还有耿超、李俊艳、向春阳、王亚敏、丁雷道、张亚楠、陶永才、史晓东、李冬芳、谢琦、高宇飞、吴保东、张丹丹、韩颖、王战红、姚瑶、段赵磊等人。同时,对清华大学出版社表示感谢。
本书的电子教案、习题答案和实例源文件可以到http://www.tupwk.com.cn/downpage/ index.asp网站下载。
由于时间较紧,书中难免有错误与不足之处,恳请专家和广大读者批评指正。在编写本书的过程中参考了相关文献,在此向这些文献的作者深表感谢。我们的电话是010-62796045,信箱是huchenhao@263.net。
编 者
2014年12月
第1章 XML简介1
1.1 XML的产生1
1.1.1 SGML的诞生1
1.1.2 什么是XML2
1.1.3 XML和HTML的不同4
1.2 XML的现状及其发展6
1.2.1 XML应用领域6
1.2.2 XML发展前景7
1.3XML相关技术10
1.4XML编辑工具15
1.4.1 普通文本编辑工具15
1.4.2 本书的开发环境16
1.4.3XML Spy简介16
1.4.4使用XML Spy编辑XML文档17
1.4.5XML Spy的视图格式20
1.5本章小结21
1.6思考和练习21
第2章 格式良好的XML文档22
2.1 XML文档的分类22
2.1.1格式不良好的XML文档23
2.1.2格式良好的XML文档23
2.2XML文档的整体结构24
2.3XML声明26
2.3.1XML声明中的version属性26
2.3.2XML声明中的encoding属性26
2.3.3XML声明中的standalone属性27
2.4XML文档的处理指令和注释27
2.4.1处理指令27
2.4.2注释28
2.5XML元素的基本规则29
2.5.1XML元素的命名规则29
2.5.2根元素29
2.5.3元素的构成30
2.5.4元素的嵌套31
2.5.5元素的属性33
2.6实体引用和CDATA段34
2.6.1实体引用35
2.6.2CDATA段36
2.7命名空间37
2.7.1有前缀和无前缀命名空间38
2.7.2在标记中声明命名空间39
2.7.3命名空间的作用域40
2.8本章小结40
2.9思考和练习41
第3章 有效的XML文档——DTD42
3.1 DTD概述42
3.2 DTD的基本结构43
3.2.1 内部DTD43
3.2.2 外部DTD44
3.2.3 DTD的基本结构45
3.3 DTD元素定义45
3.3.1 元素定义45
3.3.2 元素类型45
3.4 DTD属性说明48
3.4.1 声明属性的语法48
3.4.2 属性的默认值49
3.4.3 属性的类型50
3.5 DTD实体声明54
3.5.1 实体的概念和分类54
3.5.2 通用实体55
3.5.3 参数实体56
3.6 DTD现状和Schema的优势57
3.6.1 DTD现状57
3.6.2 Schema的优势58
3.7 本章小结59
3.8 思考和练习59
第4章 有效的XML文档——Schema60
4.1 Schema概述60
4.2 XML Schema的基本结构61
4.2.1 XML Schema文档示例61
4.2.2 XML Schema的主要组件63
4.3 XML Schema中的数据类型67
4.3.1 简单类型67
4.3.2 复杂类型72
4.4 XML Schema的命名空间74
4.4.1 名称重复74
4.4.2 命名空间74
4.4.3 使用命名空间75
4.5 XML有效性的验证76
4.5.1 使用开发工具验证76
4.5.2 编程验证77
4.6 本章小结80
4.7 思考和练习80
第5章 使用CSS显示XML文档83
5.1 样式表概述83
5.1.1 显示XML的两种常用样式表83
5.1.2 样式表的优势84
5.2CSS简介85
5.2.1 CSS基本概念85
5.2.2CSS的历史85
5.2.3CSS的创建与应用85
5.3CSS基本语法87
5.3.1 定义样式87
5.3.2 对XML文档有效的CSS
选择符88
5.4XML与CSS结合的方式89
5.4.1 调用外部样式表文件89
5.4.2在XML文档内部定义样式90
5.4.3混合方法指定样式91
5.4.4使用多个样式文件91
5.5CSS属性92
5.5.1 字体属性93
5.5.2 文本属性93
5.5.3 颜色和背景属性94
5.5.4 设置文本的显示方式95
5.6CSS的显示规则96
5.7本章小结97
5.8思考和练习98
第6章 使用XSL显示XML文档100
6.1 XSL概述100
6.1.1 CSS的局限性及XSL的特点100
6.1.2 XSL的构成101
6.1.3 XSL转换入门102
6.2 XSL文档结构103
6.2.1 创建一个XSL实例103
6.2.2 XSL入门106
6.3 XSL模板107
6.3.1 使用template元素定义模板107
6.3.2 使用apply-templates元素处理子节点108
6.3.3 XSL的默认模板规则112
6.3.4 使用命名模板113
6.4 XSLT的元素113
6.4.1 使用xsl:value-of获得节点值113
6.4.2 使用xsl:for-each处理多个元素115
6.4.3 使用xsl:sort对输出元素排序118
6.4.4 用于选择的元素xsl:if和xsl:choose119
6.5 XSL的模式语言122
6.5.1 相对路径和绝对路径122
6.5.2 匹配节点的模式122
6.6使用XMLSpy管理XSL操作127
6.7 本章小结129
6.8思考和练习129
第7章 XML解析器——DOM132
7.1 DOM概述132
7.2 DOM的结构133
7.3 节点类型135
7.4 DOM基本接口136
7.4.1 Node接口137
7.4.2 Document接口137
7.4.3 NodeList接口139
7.4.4 NamedNodeMap接口139
7.4.5 Element接口139
7.4.6 Text接口141
7.5 DOM的使用141
7.5.1 修改XML文档141
7.5.2 生成XML文档143
7.5.3 处理空白145
7.5.4 验证格式良好与有效性146
7.6 浏览器对DOM的支持146
7.7 本章小结146
7.8 思考和练习147
第8章 XML解析器——SAX148
8.1 SAX简介148
8.2 SAX的特点149
8.3 SAX工作机制150
8.3.1 事件处理器150
8.3.2 SAX事件151
8.3.3 SAX常用接口152
8.3.4 SAX回调方法154
8.4 使用SAX解析XML155
8.4.1 SAX解析XML文档155
8.4.2 处理空白156
8.4.3 实体156
8.5 SAX错误信息156
8.6 SAX与DOM157
8.7 本章小结160
8.8 思考和练习160
第9章 XML与数据库161
9.1 XML与数据库技术的发展161
9.1.1 数据库技术的发展162
9.1.2 XML与数据库技术的结合163
9.1.3 XML在数据库中的应用模式163
9.2 XML的数据交换与存储机制164
9.2.1 XML的数据交换机制164
9.2.2 XML的数据交换类型165
9.2.3 XML的数据存取机制166
9.2.4 XML数据交换技术的工程应用167
9.3 XML与数据库的数据交换技术168
9.3.1 ADO.NET简介168
9.3.2 .NET中的XML特性170
9.3.3 从数据库到XML文档171
9.3.4 从XML文档到数据库179
9.4 SQL Server 2005对XML的支持182
9.4.1 SQL Server 2005对XML的支持182
9.4.2 XML数据类型183
9.4.3 XML类型的方法184
9.4.4 发布XML数据185
9.4.5 在表中插入XML数据188
9.5 本章小结190
9.6 思考和练习191
第10章 基于XML的论坛开发192
10.1 系统功能分析192
10.1.1 论坛功能192
10.1.2 系统模块193
10.2 论坛系统XML文件的设计193
10.2.1 users.xml194
10.2.2 section.xml195
10.2.3 topic.xml197
10.2.4 reply.xml198
10.3 访问XML数据的公共类198
10.3.1 系统配置199
10.3.2 两个基本公共类199
10.3.3 用户信息访问类200
10.3.4 版块信息访问类204
10.3.5 帖子信息访问类209
10.3.6 回复信息访问类215
10.4 帖子相关模块的设计与实现217
10.4.1 帖子的浏览217
10.4.2 特定帖子回复的浏览223
10.4.3 已登录用户发表新帖225
10.4.4 已登录用户回复旧帖226
10.5 用户信息模块的设计与实现227
10.5.1 用户注册227
10.5.2 会员登录230
10.5.3 会员注册信息查询与修改231
10.5.4 会员发帖或回复信息查询与管理234
10.6 管理模块的设计与实现237
10.6.1 管理员登录237
10.6.2 版块管理237
10.6.3 帖子管理242
10.6.4 其他管理244
10.7 本章小结246
10.8 思考和练习246
参考文献247