疯狂XML讲义(第2版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-14 23:28:52

点击下载

作者:李刚

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

疯狂XML讲义(第2版)

疯狂XML讲义(第2版)试读:

前言

自从1998年问世以来,XML已经广泛应用于各种开发平台、各种编程语言中,并衍生出大量新的标记语言:如SVG(Scalable Vector Graphics)、SMIL(Synchronized Multimedia Integration Language)等,这些都充分说明了XML强大的生命力和广泛的应用前景。

对于大部分Java开发者而言,使用XML最多的地方还是配置文件,不管是Java Web应用的初学者,还是Struts、Spring等开源框架的学习者,几乎每天都会接触到大量的XML文档。因此大部分开发者都会把XML文档和配置文件等同起来,但实际上XML的应用是非常广泛的。本书系统而深入地介绍了XML以及XML相关方面的内容,并通过实际案例示范了XML在实际开发中的应用,本书将带领读者系统而深入地掌握XML的相关知识。

本书大部分章节后都提供了相应的编程习题,供学习者巩固所学、将理论融入实际开发之用。关于这些编程习题的解题思路和参考答案可登录http://www.crazyit.org获取。本书有什么特点

本书写作过程中大量参考了http://www.w3c.org站点中关于DTD、XML Schema、XSLT、XPath、XQuery等技术的最新规范。也参考了微软MSDN里关于XML的内容,主要由http://msdn. microsoft.com/zh-cn/library/ms256177.aspx和http://msdn.microsoft.com/zh-cn/library/ms256177(VS.80).aspx两个页面提供。

本书希望系统、深入地介绍XML以及相关技术,希望读者能通过本书更全面地掌握、使用XML的相关知识。归纳起来,本书大致有如下3个特点。

1.知识全面、专业性强

本书并不是一本关于XML基础的图书,本书系统而深入地介绍了XML相关知识,不仅包括DTD、XML Schema等基础内容,也包括XSLT、XPath、XQuery、DOM、SAX、JDOM和dom4j等高级内容。除此之外,还介绍了XML在实际企业开发中一个重要的应用方向:Web Service,并介绍了Java领域的Web Service框架CXF的用法。这些知识点覆盖了XML相关的绝大部分内容,专业性非常强。

2.案例实际、实用性强

本书前面各章讲解各小知识点时,不仅介绍了它们的基本语法,还提供了与之对应的小范例,希望读者能理论结合实际,边读边练,通过编码来掌握相应的知识。本书除了介绍XML及其相关知识之外,更重点介绍了如何将XML知识融入实际应用开发,例如书中最后两个案例,都是XML在实际企业开发中极好的范例。

3.深入浅出、易读性强

本书与疯狂Java体系的其他图书一样,即使在介绍专业性极强的知识时,也尽量使用深入浅出的类比来帮助读者理解它们,然后配合针对性很强、重点突出的小示例来说明这些知识,降低初学者的学习难度。通过这种案例驱动的讲解方式,让读者阅读时更容易理解各知识点的功能;接下来又能迅速将所学知识应用于实际开发。本书创作感言

动手写作本书之前,博文视点的朱沭红老师已经善意地提醒笔者:关于XML的书都很难卖,可能大家都觉得XML太简单了。想一想也是,几乎所有学习Java开发的读者都应该接触过XML文档:当你开始学习JSP开发时,你就得写web.xml配置文件;当你学习Struts时,你又得写struts-config.xml配置文件。几乎所有Java学习者都接触过XML文档,所以大家可能觉得XML如此简单,怎么可能需要一本书来介绍呢?

很多人可能觉得XML非常简单,因为他们每天都会接触XML文档,但如果再深入问一下:XML除了做配置文件之外,还能干什么?他们往往一无所知。

他们知道XML可以做配置文件,但可能不知道XML配置文件的结构是由DTD、Schema控制的——因为我经常看到有人问web.xml文件能包含哪些元素?如何将JSP文件配置成一个Servlet?等等诸如此类的问题,如果他知道阅读web.xml文件对应的DTD、Schema,那他就不会再存在这些疑问了。

他们可能不知道XML还可以作为一种轻量级的持久化解决方案,就像数据库一样,应用程序可以用类似于SQL的XQuery来查询XML文档中的信息。他们可能不知道XML可以直接作为表现层来代替传统的HTML……

后来我觉得,如果确实存在上面这些情况,那我就更应该有这样一本书:全面而深入地来介绍XML的相关知识,希望可以让大家掌握XML的全貌。作为配置文件只是XML的功能之一,而XML的作用远不止这些。

最后我和朱沭红老师达成一个共识:出版一本图书除了考虑经济上的回报之外,更多地应该考虑一本书对社会价值的作用。就我以一个老程序员的眼光来看,XML不管是对于Java平台、还是其他如.NET平台都具有非常重要的作用。就像做B/S开发的程序员,你可以选择Java、PHP或者其他,但你无法回避JavaScript;XML也是如此,它不仅对于Java平台是有用的,而且对于其他开发平台也是有用的。

由于XML技术有着广泛的用途,而广大Java学习者、开发者又对其重视不够,因而我们觉得出版这样一本书也许可以让大家对XML投以更多的目光,那这本书的价值也就体现出来了。本书写给谁看

本书是疯狂Java体系丛书之一,学习本书无须任何XML基础,但DOM、SAX、dom4j、JDOM解析部分包含了大量Java编程,因此建议先阅读疯狂Java体系的《疯狂Java讲义》一书。如果时间允许,建议读者按照本书所附的学习线路图,遵循学习规律进行学习。第1章XML概述本章要点标记语言的历史和作用XML的历史和作用XML和HTML的联系和区别XML和HTML相互之间的差异XML的几个优势XML作为配置描述文件XML作为数据交换工具XML和Web Service使用普通文本编辑器编写XML文档使用XMLSpy编写和验证XML文档使用Stylus Studio编写和验证XML文档XML配置描述文件和Java Annotation的对应关系 XML数据交换和JSON数据交换的对应关系

XML的全称是Extensible Markup Language,即可扩展标记语言,它由SGML(Standard Generalized Markup Language)发展而来,允许开发者自由定义标签,可以将标签和内容有效分离。不同于HTML,XML不再侧重于数据如何表现,而是更多地关注数据如何存储和传输。因此它逐渐演变成为了一种跨平台的数据交换格式,一种轻量级的持久化方案。通过使用XML,开发者可以在不同平台、不同系统之间进行数据交换,还可以将程序状态保存到XML文件中,而无须使用关系数据库。

XML广泛应用于Java EE开发的各个方面,绝大部分Java应用和框架都在使用XML作为配置文件来管理各Java组件,Java作为最流行的跨平台编程语言,不可避免地需要在不同平台之间进行数据交换,而XML则为这种数据交换提供了支持。除此之外,XML还是Web Service技术的重要基础,而Web Service技术则是异构系统整合的重要手段,甚至为SOA(面向服务的架构)也提供了底层的技术实现。由此可见,XML对于实际企业开发具有举足轻重的作用。1.1 XML的起源

XML是一种应用非常广泛的标记语言,与另一种广为人知的标记语言HTML相似,它只是通过在文本文件中添加一些额外的标记,来传递更多附加信息。与所有标记语言一样,XML本身并无任何“动作行为”。1.1.1 标记语言

标记语言不是像Java、C一样的编程语言,它本身并无任何“动作行为”。标记语言只是用一系列约定好的标记来对电子文档进行标记,从而为电子文档额外增加语义、结构和格式等各种方面的信息。

简而言之,标记语言专为信息增加额外的标记,也就是增加一些特殊标识。例如有些阅读过的书,在某一段文字下画有一道线,这道线就是一种标记。该标记用于传递一种附加的信息:这段文字很重要。

实际上,所有的标记语言都用于为被标记内容附加一些额外的信息:例如最常见的标记语言HTML。假设在HTML页面中有如下代码:

上述代码中的标记用于向浏览器传递额外的信息:被标记的文字需要采用红色显示。由此可见,HTML页面中的标记主要用于向浏览器传递各种显示信息。

标记语言可传递非常丰富、全面的信息,不仅可传递各种显示信息,还可传递其他的各种额外信息。标记语言家族有两个先驱:GML和SGML,其中GML(Generalized Markup Language,通用标记语言)由IBM的研究人员于20世纪60年代创建。创建GML的初衷是建立一种通用的文档格式,以提高系统的可移植性。显然,这种通用的文档格式必须遵守特定的标记规则。

再后来,IBM的研究人员进一步完善并规范了GML,将其称为SGML(Standard Generalized Markup Language,标准通用标记语言)。1986年,国际标准化组织(ISO)采纳SGML作为工业标准。今天,SGML主要用来定义文献模型的逻辑和物理类结构等。

GML和SGML是标记语言的两个先驱,但这两个先驱都没有得到广泛应用,应用最广的是另外两个标记语言:HTML和XML。

图1.1大致显示了标记语言的发展历史。图1.1 标记语言的发展历史

通过上面的介绍可以看出,标记语言比编程语言简单得多,只需按规定为文本文件添加一些特殊标记即可,这些特殊的标记用于传递更多额外的信息。1.1.2 XML的基本概念

XML(Extensible Markup Language,可扩展标记语言)由SGML简化而来,它不仅具备SGML的各种优势,同时还摈弃了其复杂、难于使用的缺点。

SGML从20世纪80年代初开始应用,其主要作用是:用于创建其他的标记语言。它为语法标记提供了强大的工具,同时还具备极好的可扩展性,因此在分类和索引数据中非常有用。SGML非常复杂,因而对于网络上的日常应用难以适应。最重要的是,包括Netscape在内的一些浏览器厂商明确拒绝支持SGML,这样就妨碍了SGML的传播。

XML对SGML进行了简化,但并没有弱化它的功能,SGML能实现的功能,XML几乎都可以实现,这也是XML最吸引人的地方。

1998年2月10日,XML正式成为W3C 的推荐标准。

与HTML不同的是,XML被设计用于传输和存储数据,而不是用来显示数据。

XML是可扩展标记语言,因此没有预定义任何标签,开发者可以自行定义任意的标签。

例如如下代码定义了疯狂Java实训营的教材:

上面这份XML代码列出了5本图书的书名,该文件中的各种标记都是自定义的,开发者完全可以自定义符合约定的标记。

需要指出的是,XML文件只是一份静态的文本文件,它可以对外提供一些信息,但不能完成任何“动态行为”。我们必须自行编写软件或程序,才能传送、接收和显示出这个文档。

XML没有任何特别之处,它只是纯文本而已,任何有能力处理文本文件的软件都可以编辑XML文件。当然,如果希望程序能读懂XML文件,并有针对性地处理其中的标签,就需要编写处理它的应用程序了。

由此可见,XML并不是传统意义上的编程语言,而只是一种独立于软件和硬件的信息传输工具。

现在,XML在企业应用中的作用甚至超过了传统的HTML,大批的软件开发商采用它作为数据交换的标准。XML是各种应用程序之间进行数据传输的最常用工具,它在信息存储和描述领域正变得越来越流行。1.1.3 XML和HTML

HTML具有免费、简单的特点。几乎所有的浏览器都支持HTML标记。HTML最初于1990年由CERN设计,它是种非常简单的SGML,可以方便普通人的使用。因此,HTML得到了广泛应用。但它同时具有与生俱来的缺陷:不具备可扩展性;数据逻辑与表现逻辑混杂,导致难以阅读,难以维护。

与HTML不同的是,XML被设计用来传输和存储数据,而且它允许开发者自定义标记,因此功能更强大。值得指出的是,XML并不是用来代替HTML的,二者是为不同目的而设计的。

表1.1对XML和HTML各方面存在的差别进行了对比。

表1.1 XML和HTML的对比1.2 XML的优势

XML能够广泛应用于企业应用开发的各个领域,是由于其本身具有几大优势。简单地说,XML具有如下3个优势。1.2.1 简单易用的标记语言

从某种程度上讲,XML比HTML更简单。由于XML不像HTML那样提供了大量预置标签,因此开发者甚至不需要记住什么标记,而可以使用任何标记来定义XML文档,只需遵守XML基本规则即可。

例如,要定义一份我们喜欢的游戏的列表,可以定义如下XML文件:

程序清单:codes\01\1.2\games.xml

这份文件其实只是一份普通的文本文件,其中包含3个游戏的名称和类型。除此之外就是自定义标签,XML文件对自定义标签没有过多要求。

正因为XML简单易用,所以才保证了它可以广泛应用于软件开发的各个方面。1.2.2 严格的格式

XML虽然简单易用,但又不像HTML那么自由,而是具有严格的格式,从而保证了计算机程序可以方便地读取其中包含的信息。

一份XML文件至少应满足如下几个要求: 整个XML文档有且仅有一个根元素。 每个元素都由开始标签和结束标签组成(例如就分别是开始标签和结束标签),除非使用空元素语法(例如就用了空元素语法)。 元素与元素之间应该合理嵌套。例如疯狂Java讲义,可以很明确地看出元素是元素的子元素,这就是合理嵌套;但疯狂Java讲义

这种写法就比较混乱,也就是所谓的不合理嵌套。 元素的属性必须有属性值,而且属性值应该用引号(单引号和双引号都可以)引起来。

当XML文档遵循上面的4个基本规范时,可以准确地转换成树状结构,因此XML文档也称为结构化文档。例如上面关于游戏列表的XML文档可以转换为图1.2所示树状结构。图1.2 XML文档对应的树状结构

由于XML文档具有严格的格式,可以非常方便地转换成对应的树状结构,因此可以更方便地编写程序来进行处理(包括读取XML文档中包含的信息和将信息保存到XML文档中两个方面)。这就为XML作为数据交换工具提供了基础。

试想一下,当Windows平台上的一个程序需要将数据传给Linux平台上的另一个程序时,我们可以在Windows程序中使用XML文档来保存这些数据,然后将该文档传给Linux平台上的程序,该程序就可以获取这些数据了。在这个过程中,Windows平台上的程序需要将数据保存到该XML文件中,Linux平台上的程序则需要读取其中的数据——这两个过程都得益于XML文档良好的格式。

XML是平台无关的数据交换语言,而Java是平台无关的编程语言,因此有人说XML和Java是天生的一对。1.2.3 数据逻辑和显示逻辑分离

从前面的介绍可以看出,XML文档主要关注于数据的传输和存储,对数据如何显示则并不关心。从这个意义上看,XML文档有点类似于MVC(模型、视图和控制器)模式里的数据模型,它只负责提供逻辑数据,至于以何种方式显示则由视图决定。

至于XML的显示,可以依赖于简单的CSS,也可以使用XSLT,甚至可以使用JSP页面来负责解析、显示。

从这个意义上看,可以说XML本身没有可显示性,XML文档只包含需要显示的数据。但正因为没有与任何显示方式绑定,它反而可以任意形式显示出来。

例如用Firefox打开前面关于游戏列表的XML文档,可看到图1.3所示结果。图1.3 以Firefox浏览XML文档

从图1.3中可以看出,由于该XML文档未包含任何样式信息,因此只是显示为一棵简单的文档树。即便如此,这棵简单的文档树也是Firefox为我们提供的“视图效果”。至于如何使用CSS和XSLT来显示XML文档,后面会有详细介绍,此处不再赘述。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载