从xml诞生之日起,它就一直是业界的焦点话题之一。经过了几年的发展,XML技术日趋成熟,现在越来越多的应用都是基于XML开发的。在Internet日益普及的今天,分布式编程日显重要,越来越多的应用都开始向这一方向转型。在这一领域中,XML作为一种中间的数据接口,已经显示出其不可替代的重要性。与此同时,java语言开发Internet分布式应用程序的潜力也被越来越多的人看好,EJB体系结构也日渐成熟。利用Java,人们可以很迅速的开发出可移植的、弹性好的、易于治理的分布式应用程序。
Java语言一直都被认为是最适合进行XML编程的语言之一。与平台无关的语言Java加上与平台无关的数据XML,确实能够完成最为复杂且弹性最好的分布式应用。
在Java应用中引入XML,其实并不是很难,而且已经有诸多规范和诸多的类库开发出来,以简化Java中的XML的编程。在这些规范中,最为流行的就是SAX和DOM,后者也是W3C所推荐的标准。而支持XML的Java类库更是不胜枚举,除了Sun所发布的JXAP之外,还有像IBM、Microsoft等巨头所提供的类似产品。而且,这些产品大多都是免费的,用起来不用花一分钱。所有的这些规范和类库,已经在很大程度上简化了XML编程的复杂系数,你只需要了解这些规范和JXAP所定义的API,就已经能够进行XML编程了。而我们这篇文章的目的,也就是为大家介绍这些规范和API。相信读完本文后,您就不会再认为XML编程是多么困难的事了。
背景知识
关于XML的讨论已经很多了,对于XML的看法也是见仁见智。要给XML下一个确切的定义是一件很困难的事情,但我们可以从下面四个方面来看:
1.XML是一种被设计成方便的用来在Internet上传播的标记语言。XML与SGML兼容(确切的说是SGML的一个简化了的子集),并且能够很轻易的在任何文本编辑器中进行浏览和编辑。
2.XML用来定义数据的逻辑结构,用树的方式将所有的数据组织起来,这使得XML文档很轻易理解和处理。而XML文档的结构是通过DTD或者Schema预先定义的,这使得XML中的数据在特定的应用中都能够有确切的含义。
3.XML是一种定义严格的语言,它几乎没有定义什么可选的特性。这使得XML达到了最大程度的通用性,任何与XML兼容的解析器都可以对一个合法的XML文档进行解析而不会出现任何错误。这样,XML就能够作为一种最广义的中介,在各种平台,各种语言和各种程序中流通。
4.XML是一种用来定义数据和原数据的语法,这就使得你能够定义数据本身。这也是XML最重要的特性之一,因为从理论上讲,任何东西都可以用数据进行描叙。也就是说,由于XML提供了描叙数据的方法,因而也就具备了描叙任何事物的能力。
关于XML的应用,我们举一个简单的例子来看看它的威力所在。
现在的大部分网站都是用Html编写的。网页设计师们精心设计的网页,能够在Web浏览器上很漂亮的显示出来,但是假如想把这些网页所包含的内容重新设计在一本书中的话,显然,浏览器上的漂亮内容就不能很方便的在书中体现出来了。我们知道,HTML是一种结构性很差的语言,它将显示和内容紧密的结合在一起,要将内容有选择的从HTML文件中分离出来是非常困难的,非凡是在那些设计精美的网页中。这时候,或许唯一的办法就是重新进行设计了。但是,XML的出现为解决这种问题提供了一种良好的解决方案。
因为XML只是定义数据,它并不关心数据是如何显示的,所以用XML设计出的网站其内容和显示是分离的。一般的网页是通过XSLT对给定的XML文档进行变换之后生成的。现在我们要将网站的内容放在一本书中,只需要重新定义XSLT,给出变化规则,就可以将内容完美的再现在另外的一种形式中了。
上面所讲述的只是XML应用的一个重要方面,实际上现在XML的应用远远不止如此,很多协议比如SOAP,都是基于XML的。