UML软件工程组织

整合Java与XML的新应用(1)
作者:谷和启 本文选自:开放系统世界——赛迪网 2002年11月20日

XML(eXtensible Markup Language,可扩展的标记语言)是万维网联盟(W3C)创建的一组规范,用于在Web上组织、发布各种信息。它不仅可以满足迅速增长的网络应用的需求,还能够确保网络进行交互操作时具有良好的可靠性与互操作性。

XML的语法类似HTML,都是用标签来描述数据的。HTML的标签是固定的,我们只能使用,不能修改。XML则不同,它没有预先定义好的标签可以使用,而是依据设计上的需要自行定义标签。XML是一个元语言,根据不同的行业和语义,可以派生出许许多多的协议和规范。目前的基本协议有XSL、XLink/Xpointer、Xpath、XHTML、Schema等。不同的行业和领域都可以制定自己的XML规范,用于横向和纵向的信息交流和数据传输。XML规范有大有小,大的可以为全世界范围内的商务数据制定格式,像ebXML、Biztalk、eCo;小的有专门用于电子钱包的ECML,有为数学制定的MathML;还有为多媒体数据同步的SMIL,像XSL是专门用于显示的,它制定了许多有显示语义的标签;而XLink是描述文档之间关系的语言。像Micrsoft 的CDF(Channel Definition Format)推送频道“PUSH”技术应用、WML(Wireless Market Language)无线商务应用等等都是XML技术的具体应用。XML给基于Web的应用软件赋予了强大的功能和灵活性,因此它给开发者和用户带来了许多好处。利用XML用户可以方便地进行本地计算和处理。XML格式的数据发送给客户后,客户可以用应用软件解析数据并对数据进行编辑和处理。使用者可以用不同的方法处理数据,而不仅仅是显示它。XML文档对象模式(DOM)允许用脚本或其它编程语言处理数据,数据计算不需要回到服务器就能进行。XML可以被利用来分离使用者观看数据的界面,使用简单灵活开放的格式,可以给Web创建功能强大的应用软件。

XML核心功能的有关特性和规范如下:

1. 格式良好的(Well-Formed)XML文档;

2. 文档类型定义(DTD);

3. XML使用样式—CSS(Cascading Style Sheet,层叠样式表单)和XSL(eXtensible Style Language,可扩展样式语言);

4. 文档对象模型(DOM)—XML编程接口;

5. XML 简单API(SAX)—XML编程接口;

6. XML 命名空间(Namespace)和模式(Schema);

7. 链接(XLink)和查询;

8. XPath(XML Path Language) 和 XPointer(XML Pointer Language);

9. 转换XML—XSL和XSLT(XSL Transformation);

10. XML 和数据库;

11. 用于服务器协议— XML-RPC、SOAP(Simple Object Access Protocol,简单对象访问协议)和WDDX(Web Distributed Data Exchange,分布式Web 数据交换)。

XML 是一种具有描述数据功能的语言,它十分适合作为知识表示语言或作为组件及文件格式的表示方法。它还可以让数据在不同的来源中,根据通用的语法规则来处理。而Java则是用于Internet、适合于分布式环境、提供了一个跨平台的语言。XML和Java相结合主要原因是基于XML的语法提供了一种灵活的、标准的、健壮的Java编程方案,同时,Java也将一种普遍的语义集合应用于XML数据。既然Java和XML都是可移植的标准,这两种技术结合的结果也是可移植的,可以重用数据和移植行为。单独使用XML或Java所能获得的所有潜力还没有被完全掌握,将它们结合就走进了一个巨大的、新的国度。将XML应用于Java的两个主要的应用是面向表示的出版业和企业中面向消息的中间件技术。

Java和XML是在为不同客户开发Web程序时形成得自然的匹配。从传统的电话到最新的智能冰箱,利用和产生的信息都是在不同的系统平台的服务器上交换。XML和Java的方便性和可延展性使它们在新的Web上具有更多的功能:

1. 结构化—建立有任何复杂层次的数据模型;

2. 可扩展性—根据需要定义新的标志;

3. 验证—检查数据在结构上的正确性;

4. 独立与媒介—以多种方式发布内容;

5. 独立于供应商和平台—使用标准的商业软件,甚至文本工具处理任何符合(XML标准)的文档。

上述这些功能使得XML技术被期望给面向网络的应用,特别是在数据交换领域带来革命性的影响。Java 与XML一起使得新一代Web应用成为可能。

Java XML Pack 的由来


因为XML的信息编码容易阅读、处理和产生,所以在许多信息交换中XML是一种首选的技术。Java可以认为是XML的“同事”,因为这两种语言都有相同的历史背景(C++、 SGML),都具有简单性、方便性和可移植性,并且都继续在工业上、学术上开发(W3C、JCP)。 理所当然Java在服务器和客户端的XML程序开发上成为一种首选语言。

Java 软件平台为了建立基于XML的程序已经全面地收集了API核心规范,具体有6个(JDK1.4)。它们分别是JAXP (Java API for XML Processing) 、JAXB (Java Architecture for XML Binding) 、JAXM (Java API for XML Messaging)、JAX-RPC (Java API for XML-based RPC)、JAXR (Java API for XML Registries)、JDOM (Java DOM)。简介如下:

1.JAXP支持使用 DOM、 SAX和XSLT处理XML文档。JAXP允许程序分析和转换XML 文档独立于一个特殊的 XML 处理进程。根据程序的需要,开发者们可以机动地与XML处理机间交换而不用改变程序代码。这样,程序和工具开发者们能够快速和容易地写出可以支持XML的Java应用程序。

JAXP参数的实现包括一个支持SAX和DOM的、高质量的解析器和一个支持XSLT的转换引擎。最新的版本JAXP 1.1允许使用最近的 SAX-2和 DOM level 2, 同样它也包括一个基于TrAX框架 (为XML转换API)的XSLT。 而最初的版本JAXP 1.0支持 SAX-1 和 DOM level 1。JAXP 1.1将来可当作一个用于JDK 1.1.8和更高平台的、可选择的包,也许将来还会包括在 J2SE(Java 2 Platform Standard Edition) 1.4和J2EE(Java 2 Platform Enterprise Edition)1.3 中。

2.JAXB 提供了一个API工具,它可以自动地在XML文档和Java对象间建立映射。JAXB可以使XML方便使用编译进一个XML计划的一个或多个类。已经产生的类提供所有的有关XML解析和格式的细节,它们能保证在计划中的强制约束有效。在许多事件里,使用一个SAX(Simple API for XML)解析器或执行一个DOM(Document Object Model) API是非常有效的。JAXB 1.0 将会成为一个Java 2平台的可选择性的包。

3.JAXM 的可选择包允许程序发送和接收用纯Java API导向XML的文档。 JAXM工具的SOAP(Simple Object Access Protocol) 1.1及其附件可使开发者能集中于为它们的程序建立、发送、接收和分解信息包,这样就代替了低层次的XML通信程序。

这个版本的JAXM规范包括Messaging Profiles概念。它的目的就是为了建立一个基础,使之可支持一类高层次基于标准的信息协议。 一个Profile的例子就是执行ebXML 的传输、路由和打包的信息处理服务,或者基于JAXM 的W3C 的XMLP。因此,Java技术开发者们在使用JAXM 时,将有挂接XML信息的能力。

这些高层次的协议常常在基本的基于SOAP信息之外,实现一些额外的功能。这个额外的功能对信息的安全性、可升级性及完整性经常是有用的。

JAXM 1.0 将可当作一个可选择的包用于J2SE。

4.JAX-RPC为基于RPC协议的标准XML提供了一个独立传输的API。JAX-RPC 1.0 将可当作一个可选择的包用于J2SE。JAX-RPC 将来也许会包括J2SE发行版或者J2EE。JAX-RPC 最近被 Executive Committee of the Java Community ProcessSM 认可,并且已经建立起专家组。 JAX-RPC 规范将作为 JSR-101被用于开发 JCP 进程。

5.JAXR提供一个统一和标准的 Java API 来传递不同种类的XML Registries。 XML Registries 能够建立、配置和发现Web服务器。

现在的XML Registries规范有ISO 11179、OASIS、 eCo Framework、 ebXML 和 UDDI。 JAXR API 允许 Java 程序员通过不同的XML Registries使用一个简单、容易使用的抽象API。JAXR API的JAXR 信息模式使它方便在XML registries中记录内容和数据。

JDK1.4的JAXR API规范包括在JAXR信息模式同ebXML Registry 和 UDDI Registry规范间建立的细节。

JAXR API 工作在与Java APIs for XML相关的核心规范上,比如说 JAXP、JAXB、 JAX-RPC 和 JAXM, 以允许 Web 服务器包含J2EE平台。

JAXR 1.0 将当作一个可选择的包用于J2SE,将来也许会包括在J2EE中。

6.JDOM是一种面向Java 的读、写和操作XML 文档的API。JDOM 与现行的SAX 和DOM标准兼容,为Java 程序员提供了一个简单、轻量的XML 文档操作方法。需要指出的是JDOM是专门为Java 程序员开发的,所以采用许多Java 语言的优秀特性,比如方法重载、集合(Collections,这是在Java2中出现的数据操作类型)和类映射(Reflection)。

JDOM 是一种使用XML 的独特Java 工具包,用于快速开发XML应用程序。它能够替换org.w3c.dom 软件包来有计划地操作XML 文档。实际上JDOM 和DOM 能够并存。

标准的 DOM 文件是由文字结点、元素结点、处理命令结点和其它许多的结点组成的。不过这些结点造成了一个松散的DOM 对象,也造成了应用上的困难。由于JDOM具有没有层次性的特点,所以它将XML 文件建立成一个Java 对象,这种方法让在Java 中使用XML 变得非常的容易,同时解决了DOM 应用上的困难。其次,JDOM 采用类驱动,不需要像DOM 那样进行工厂化接口配置,所以JDOM 的使用是直截了当的。由于使用JDOM对象就像使用Document、Element 和 Attribute 这些类的直接实例,所以创建一个新JDOM 对象在Java 语言中就像使用new 操作符一样容易。

Java 与 XML 的结合应用

建立一个良构(Well-Formed)的XML 文档及验证的实例

对于一个XML文件是否符合Well-Formed 所规定的各项XML 基本语法,必须借助XML 分析器来加以检查。比较常见的XML 分析器有Xerces、JAXP 和MSXML。

一个XML 文档是有明显特征的。下面是一个XML 文档的实例People.xml,代码如下:

<? xml version="1.0" encoding="GB2312"? >
<PeopleInfo>
<People PeopleId="YOUR">
<PeopleName> 古董 </PeopleName>
<PeopleSex> 男 </PeopleSex>
<PeopleAge> 23 </PeopleAge>
</People>
<People PeopleId="SHEN">
<PeopleName> 王冠 </PeopleName>
<PeopleSex> 女 </PeopleSex>
<PeopleAge> 25 </PeopleAge>
</People>
</PeopleInfo>



版权所有:UML软件工程组织