一段时间以来,XML已经成为Internet开发人员之间的热门话题。但是怎样深入理解XML并让其工作呢?本书演示了如何使用XML API、工具和各种技巧构建真实世界的应用,并且要求这些代码和数据都是真正可移植的。
Java为编程提供了一种与平台无关的语言,从而导致了一场编程世界的革命。XML为数据交换提供了一种与平台无关的语言,使得这场革命更进一步。对于构建基于Web的企业级应用而言,Java和XML有许多相似的特性,比如平台无关性、可扩展性、可重用性和全球语言(Unicode)的支持。本书展示了如何将两者结合起来构建动态生成内容的Web站点,如何编写具有更低开销的信息共享和数据交换的企业级软件,以及如何对需要可移植数据的其他问题开发简单和高效的解决方案。
本书覆盖如下主题:
·XML基础,包括DTD、名字空间、XML Schema、XPath和XSL
·SAX API,包括所有的处理类、SAX2扩展、过滤器和写入器
·DOM API,包括DOM Level 2、Level 3和DOM HTML模块
·JDO MAPI,包括API核心和XPath支持
·数据绑定,使用DTD和XML Schema作为约束
·使用XML-RPC与SOAP开发应用
·使用Web发布框架,如Apache Cocoon
·使用SOAP、UDDI和WSDL创建Web服务
·使用RSS和XSP构建信息频道和动态内容
本书第二版还包括SAX和DOM的高级知识章节,以及关于SOAP和数据绑定的新章节。在介绍XML基础的一章之后,本书的其他部分着眼于如何在Java应用中使用XML。如果你在使用Java进行开发并需要使用XML,或者以后要使用XML,或者你正投身于新的P2P运动、消息收发或Web服务,或者在为电子商务开发软件,本书将是你不可或缺的伴侣。
前言
第一章 简介
XML的重要性
XML的重要组成部分
必备条件
下章预告
第二章 基本功
基础知识
约束
转换
更多内容
下章预告
第三章 SAX
做好准备
SAX阅读器
内容处理类
错误处理类
疑难解答
下章预告
第四章 SAX高级知识
属性与特征
其他处理接口
过滤器和写入器
更多处理接口
疑难解答
下章预告
第五章 DOM
DOM
串行化
可变性
疑难解答
下章预告
第六章 DOM高级知识
改变
名字空间
DOM Level 2模块
DOM Level 3
疑难解答
下章预告
第七章 JDOM
基础知识
PropsToXML
XMLProperties
JDOM是标准吗?
疑难解答
下章预告
第八章 JDOM高级知识
JDOM核心剖析
JDOM和工厂类
封装器
疑难解答
下章预告
第九章 JAXP
API还是抽象
JAXP 1.0
JAXP 1.1
疑难解答
下章预告
第十章 Web发布框架
框架的选择
安装
使用发布框架
XSP
Cocoon 2.0以及以后版本
下章预告
第十一章 XML-RPC
RPC与RMI
创建入门程序
给服务器加码
实战
下章预告
第十二章 SOAP
开始
配置
深入实践
继续深入
下章预告
第十三章 Web服务
Web服务
UDDI
WSDL
合练
下章预告
第十四章 内容协同发布
Foobar公共图书馆
Mytechbooks.com
推与拉
下章预告
第十五章 数据绑定
首要原则
Castor
Zeus
JAXB
下章预告
第十六章 展望
XLink
XPointer
XML Schema绑定
其他
下章预告
附录一 API参考
附录二 SAX 2.0特征和属性
词汇表
在一年多以前,写本书第一版前言的时候,对于所面临的大趋势,我的认识其实并不是太明确。那时我开玩笑地写到,XML会出现在人们的帽子和T恤衫上。现在,当我坐着写到这里时我身上正穿着一件写着大大的“XML”字样的T恤。不仅如此,我的帽子上也印着“XML'’(事实上我有两顶这样的帽子!)。因此,XML的承诺已经实现了,这是毫无疑问的。一切真是太美妙了。
可是,这也意味着每天有更多的开发工作要做,而且XML正在以大大出乎我意料(做梦也想不到)的速度成长。这对XML是大好事。可本书的第一版就倒霉了:为什么一切似乎都过时了呢?我在是否要写SAX 2.0和DOM Level 2上还曾经犹豫过呢,它们现在却已成为业界标准;我在书中第一次引入了JDOM,而现在它成为了JSR(Sun公司的Java标准请求过程);我甚至没有提到SOAP、UDDI、WSDL和XML数据绑定,而新版本中它们却要占据整整三章!是啊,这世界变化真快。
如果你还在怀疑自己是否会在下几个月里用到XML,可以从本书得到帮助。如果你的电脑桌上正放着本书第一版,我推荐你看一看新版本。我想这对你仍然非常重要。这次我删去了对基本概念过多的描述,将XML的基本内容压缩成一章,并重写了几乎每个例子。我还加入了许多新的例子和章节。也就是说,我想让本书成为含金量更高的比较深入的技术书。这可能会使初学者花更多时间,因为帮助性的内容少了,但对于获取知识可能更有利。
本书的结构
本书的结构有些特别:前半部分(第一章—第九章)集中介绍有关XML和处理XML的Java核心API的基础知识。对三种操作XML的API(SAX、DOM和JDOM)中的每一个,都有一章讲基础,一章讲高级概念。第十章是个过渡章节,开始超出XML本身,讲述了JAXP、SAX和DOM之上的抽象层。本书的后半部分(第十一章—第十五章)集中阐释我所参与的各种会议和教程中频繁提到的各种具体的XML主题,让读者深入学习如何在程序中使用XML。这些主题包括关于SOAP和数据绑定的新章节,以及对B2B部分的更新。本书最后以两个附录结束。全书内容的摘要如下:
第一章 简介
介绍对XML各种宣传背后的真实技术,审视XML的种种术语,主要讨论为什么XML对于现在和未来的企业开发如此重要。
第二章 基本功
这是一堂介绍XML基础的速成课,从XML 1.0到DTD,从XML Schema到XSLT再到名字空间。对于已读过第一版的读者而言,本章相当于原来讲述XML的好几章的内容。
第三章SAX
本章讲述SAX(Simple API for XML,用于XML的简单API),第一个介绍的处理XML的Java API。详述了解析全过程,以及SAX所捕获和开发者可使用的事件。
第四章SAX高级知识
本章进一步讲述SAX,讨论API中较少使用但功能强大的内容。可以从中找到如何使用XML过滤器将回调行为串联起来,如何用XML写入器和SAX输出XML,还能看到一些更少用的SAX处理方法,如Lexical Handler和DeclHandler。
第五章DOM
本章沿XML知识体系继续前进,讲述另一个Java和XML API——DOM(Document Object Model,文档对象模型)。将学习DOM基础,了解当前标准(DOM Level 2),如何读写DOM树等等内容。
第六章DOM高级知识
本章进一步讲述DOM,了解各种DOM模块,如Traversal、Range、Events、CSS和HTML。我们还会了解新版本DOM Level 3,讲述如何使用新功能。
第七章JDOM
本章介绍JDOM,讲述它与DOM和SAX的异同,以及如何用它来读写XML。
第八章JDOM高级知识
本章更进一步审视JDOM,讲述此API的实际应用,如何使用工厂类处理自己的JDOM子类,还有与JAXP的集成。还可以在实际中看到XPath如何与JDOM紧密配合。
第九章JAXP
现在,作为功能完整的支持解析和转换的API,JAXP可以独立成章了。这里,我们讨论1.0和1.1版,完全学习如何使用API。
第十章Web发布框架
本章讲述Web发布框架是什么,有何重要意义,如何选择。然后讨论ApacheCocoon框架,深入审视其功能,探讨它如何为Web上的动态内容提供服务。
第十一章XML-RPC
本章讨论RPC(Remote Procedure Call,远程过程调用),它在分布式计算中的重要性(与RMI比较),XML怎样使RPC成为某些问题的可行解决方案。然后讲述如何使用XML-RPC Java库,以及如何创建XML-RPC客户程序和服务器程序。
第十二章SOAP
本章讨论如何使用XML格式的配置数据,为什么XML格式对跨平台应用如此重要,尤其是它与分布式系统和Web服务的关系。
第十三章Web服务
继续讨论SOAP和Web服务,本章详细讲述两项重要技术——UDDI和WSDL。
第十四章内容协同发布
继续B2B应用程序的讨论,本章介绍如何使用内容协同发布(conlent syndication)实现企业程序之间的互相操作。将了解到RSS(Rich Site Summary),创建信息频道,甚至还会看到一些Perl代码。
第十五章数据绑定
本章讨论一个高层Java与XML API——XML数据绑定。将了解数据绑定是什么,它是如何使处理XML变得不费吹灰之力的,以及目前已有的产品。我们将讨论三个框架:Castor、Zeus和Sun公司的JAXB(Java Architecture for XML Data Binding,Java XML数据绑定架构)的早期获取版本(early access release)。
第十六章展望
本章将对一些出现在“地平线上”的有趣新技术进行介绍,以开拓读者视野。有些技术可能会是昙花一现之物,而另一些将成为未来重要的角色。
附录一 API参考
本附录详述SAX、DOM、JAXP和JDO MAPI中可用的所有类、接口和方法。
附录二 SAX 2.0特征和属性
本附录详述SAX 2.0解析器实现中的特征和属性。
读者对象
本书以这样的信念为前提:XML将很快成为(某种程度上已经成为)Java编程中不可或缺的部分。除第一章之外的其他章节将指导你如何使用XML和Java,而不再集中讨论是否应该使用XML。Java开发者毫无疑问都要应该使用XML。因此,如果你已经是Java程序员,想成为Java程序员,要管理Java程序员,或者工作与Java项目有关,本书都适合你。如果想更上一层楼,提高开发水平,编写更清晰的代码,或者想使项目成功地按进度和预算完成,如果你需要存取原有的老数据(legacydata),分布系统组件,或者只是想了解XML的众多宣传都在讲些什么,本书也适合你。
我尽量对读者不做过多假定,我不相信XML的门槛太高很难入门的说法。但是,我也相信,读者买本书是想学习基础之外的更多东西。因此,如果以前没有编写过Java程序,语言还需要入门,应该在本书之前读一下Pat Niemeyer和Jonathan Knudsen的《Learning Java》(O'Reilly)(译注1)。读者无需了解XML,但是我假定读者,希望努力学习迅速掌握,因此我们会很快地过一下基础部分,大部分篇幅都留给高级概念。除非必要,我是不会重复素材的,因此在需要使用以前的概念时,可能得重读前面的章节,或来回跳跃地看。如果你已经会一些Java,想学XML,并准备在喜爱的编辑器中输入一些示例代码,从而成功掌握全书的内容,应该没有太大问题。
软件和版本
本书讲述了XML 1.0和到2001年7月为止的各种XML相关技术的最新版本。因为许多讲到的XML标准都不是最终版本,本书所讲述和读者读到本书时最新的标准可能会有一些差异(译注2)。
书中的所有Java代码都是基于Java 1.2平台的。如果现在还没有开始使用Java 1.2,我强烈建议你升级。单单是集合类就值得这样做。Apache Xerces解析器,Apache Xalan处理程序,Apache SOAP库和Apache FOP库都是自2000年6月以来没有变化的最新稳定版本,而所用的Apache Cocoon Web发布框架是1.8.2版。所用的XML-RPC Java库是1.0 beta 4版。所有软件都是可以自由(免费)得到的,能从http://java.sun.com、http://xml.apache.org和http://www.xml-rpc.com下载。
书中例子的源代码基本上都是完整的。所有例子的源代码和二进制形式(包括丰富的Javadoc)都可以从http://www.oreilly.com/catalog/javaxml2/和http://www.newlnstance.com下载。所有实例都可以作为Servlet、或者转换为Servlet运行,可以到http://www.newlnstance.com在线查看和使用。