一般问题
问:XML 是什么?
答: XML,可扩展标记语言,是一种用于描述和构造独立于应用程序逻辑的通用语法。XML 可以为特定行业和应用程序定义无限制的语言。
问:XML 是由谁开发的?
答: XML 是由万维网联盟( World Wild Web Consortium , W3C )发起的。 XML 开发工作始于 1996 年。
一群从业界到学院的众多种标记语言的专家,为 Web 开发了一种简化版本的 SGML (标准通用标记语言, Standard Generalized Markup Language ). 1998 年 2 月, XML 1.0 规范成为 W3C 的推荐标准。
问. XML 最大的优点是什么?
答. XML 可以简化和降低数据在 Web 环境中进行交换和发布所需要的成本。 XML 是一种可供计算机和人阅读的基于文本的语法。 XML 可跨越不通平台和设备提供数据可移植性和可重用性。它还具有灵活性和可扩展性,在不破坏现有文档结构的前提下,答应添加新的标签。基于 Unicode , XML 提供全球语言支持。
问. XML 有什么应用?
答. XML 在 B2B 网络应用程序的数据交换格式中扮演重要角色,例如电子商务、供给链治理、工作流和应用集成。 XML 的另一个应用是结构化信息治理,包括数据库中的信息。 XML 还提供了独立于媒体的发布,答应一次书写文档,以多种媒体格式和设备进行发布。在客户端, XML 还用于创建带有数据的定制视图。
问. XML 和 Java 技术之间有何关系?
答. XML 和 Java 技术是互补的。 Java 技术提供了可移植的、可维护的代码,以便处理那些可移植的和可重用的数据。此外,XML 和 Java 技术具有很多共同的特性,使得它们可以在 Web 计算方面完美地结合,包括形成业界标准、平台独立、可扩展、可重用、 以 Web 为中心和国际化等方面。
问. 在 Java 技术中使用 XML 有什么优点?
答. 与其他编程语言如 C 或 C++ 相比, Java 技术使软件开发人员的生产力有了质的提高。此外,开发者使用 Java 平台,可以创建可重用和可维护的复杂的应用程序,这是脚本语言无法做到的。协同使用 XML 和 Java ,开发人员可以用很低的成本快速地构建复杂的和可互操作的 Web 应用程序。
问. Sun 参与了哪些 XML 相关的活动?
答. Sun 积极参与 W3C 工作组,参加制定 XML 样式表 / 转换语言 (Stylesheet/Transformation , XSL/T) , XML Schema,Xlink 和 XML Query。 Sun 还参与了许多其他业界社团,包括 Oasis,XML.org 以及 Apache。
问. 在哪里可以找到更多的文档?
答. Java 技术与 XML 文档 页面包含了本网站提供的所有关于 Java 技术和 XML 文档的完全列表。
问. 我可以向哪里发送评论和建议?
答. 对于此项目的反馈意见,请发电子邮件至 xml-feedback@sun.com 。
问. 是否还有其他的由 Sun 主办的关于 XML 的邮件列表可供订阅?
答. 关于在 Java 平台使用 XML 技术的一般性讨论话题,请订阅 xml-interest@java.sun.com 。
Java API for XML Processing(JAXP )
问. 什么是 Java API for XML Processing(JAXP)?
答.Java API for XML Processing,或简称为“JAXP”,可使应用程序采用一种独立于特定 XML 处理程序实现的 API 对 XML 文档进行解析和转换。 JAXP 还提供可插入特性,答应应用程序在特定 XML 处理程序实现之间很轻易地切换。
要实现 XML 处理程序独立性这一目标,应用程序应当限制使用 JAXP API,并避免使用与实现相关的 API 。根据具体的应用程序,这可能易于或难以实现。 JAXP 包括了如 DOM 和 SAX 在内的业界标准 API 。
JAXP 出现的原因就是为了方便在 Java 平台上使用 XML 。例如,当前使用的 API ,如 DOM Level 2 ,不提供从一个 XML 输入文档中获得一个 DOM 文档对象的方法, JAXP 则可以做到。( DOM Level 3 提供这种功能,新版本的 JAXP 规范也可能会支持这种新的 Level 3 方案。) JAXP 的其他部分,如 javax.xml.transform 部分,不具备其他同等的独立于 XSLT 处理程序的 API 。
问. 在哪里可以阅读关于 JAXP 的更多内容?
答. 请参见 JAXP 常见问题 获得更多信息。
Java Architecture for XML Binding( JAXB )
问. 什么是 Java Architecture for XML Binding( JAXB )?
答. Java Architecture for XML Binding( JAXB )简化了启用 XML 的 Java 程序的创建和维护。 JAXB 提供一个绑定的编译器和一个运行时框架用来支持 XML 和 Java 对象的双向映射。绑定编译器可将 W3C XML 样式转换成一个或多个 Java 类,这个过程无需开发人员编写复杂的解析代码。模式派生类以及绑定框架可对输入和输出的 XML 文档启用错误或有效性检查,因而可以确保系统接收、处理和生成有效而无误的消息。更多信息,请参阅 Reference Implementation 和 Public Draft Specification,以上文档均可在 JAXB 主页下载。
问. JAXB、SAX 和 DOM 有什么不同?我应当选用哪一个?
答. SAX 是一种事件驱动的 XML 解析器,适用于高速处理 XML ,因为它不在内存中生成数据表示。与之不同,DOM 在内存中生成数据表示,答应应用程序对内存中的内容进行操纵。 SAX 和 DOM 都自动执行结构的有效性验证。一个应用程序可以使用 SAX 和 DOM 进行内容有效性验证,但这样的应用程序必须提供额外的代码,这可能会是复杂的、易于出错和难以维护的。
一个 JAXB 应用程序可以使用由模式生成的 Java 类对结构和内容进行有效性验证。与 DOM 类似,一个 JAXB 应用程序在内存中通过编组(marshalling) XML 文档来构造内容树,从而创建数据结构,这个树包括派生类的实例对象。但与 DOM 树不同,内容树是特定于某一种源模式的,不包含额外的树操纵功能,不答应使用其派生类的访问器方法对数据进行访问,也不能动态地构建。假如文档的内容是趋于动态且没有完好约束的,则在处理内容之前,在处理那些没有知名样式的 XML 内容方面,DOM 和 SAX 要比 JAXB 更适合。
问. JAXB 如何工作?
答. 要构建 JAXB 应用程序,首先从 XML 模式开始。beta 版本要求模式语言是 XML Schema 的 W3C 2001 Recommendation。
在获得 XML 模式之后,就可以构建和使用 JAXB 应用程序,按以下这些步骤:
1.将 XML Schema 提交给绑定的编译器,生成 Java 源文件。
您可以定制绑定声明,从而覆盖 XML Schema 组件与 Java 表示之间的默认绑定。
编译 Java 源代码。
3.使用类和绑定框架,编写 Java 应用程序,如下:
构建表示 XML 数据的对象树,该数据按 XML Schema 是有效的,可以通过从文档中解组(unmarshalling)数据或实例化要创建的类。
访问和修改数据。
可以选择对与约束相关的数据的更改进行验证,这些约束在 XML Schema 中表示。
将数据整理为新的 XML 文档。
问. 谁参与开发 JAXB ?
答. JAXB 由 Java Community Process(JCP )正在进行开发,JCP 由专家组所组成,包括 IBM、Software AG、BEA Systems、Hewlett-Packard、 TIBCO Software Inc.、 Oracle、 Fujitsu Limited、Breeze Factor LLC、Macromedia Inc. 和 Intalio Inc.。Sun 是 W3C XML Schema Working Group 最积极的成员,并与其他业界团体共同工作,如 OASIS 和 xml.org 。
问. 我从哪里能够阅读到关于 JAXB 的更多内容?
答. 对于 JAXB 更高层的解释,请参阅 Java Web Services Tutorial 中的 JAXB 一章。还需提醒的是,具体用户指南也作为 JAXB 的一个部分发布。更多关于 JAXB 的技术和细节描述,请参看最新版本的规范,您可以从 JAXB 主页 下载。请注重,此规范使用 Adobe Acrobat PDF 格式。免费下载 Adobe Acrobat。
Java API for XML Messaging (JAXM)
问. 什么是 Java API for XML Messaging(JAXM)?
答. Java API for XML Messaging(JAXM)是专门用于 Internet 上交换 XML 商业文档的 API 。常用于交换的 XML 文档的例子有订单、订购确认和发票。您可以在发送的消息中附带非 XML 数据。
问. JAXM 基于什么标准?
答. JAXM 基于简单对象访问协议(Simple Object Access Protocol , SOAP)1.1和 SOAP with Attachments 规范。JAXM 还答应 SOAP 实现之上的标准协议实现,例如 SOAP-RP 或 ebXML Transport, Routing & Packaging V1.0–Message Service Specification。
问. 是否必须在 J2EE 平台下使用 JAXM ?
答. 不是,您可以免费使用 Java 2 Platform, Standard Edition (J2SE),就像使用 Java 2 Platform, Enterprise Edition (J2EE) 一样。一个独立客户端(不使用消息提供者的客户端)可以使用 J2SE 平台向可以处理请求-响应消息的 Web 服务发送此消息。这不需要在客户端进行部署或配置,因此很轻易实现。
问. 什么是消息提供者?
答. 消息提供者是一种服务,它使用消息传送基础设施来路由和传递消息。对于客户来说,发送和接受消息是完全透明的。使用消息提供者的应用程序必须使用一个到消息提供者的连接,在 JAXM API 中称之为 ProviderConnection 对象。使用消息提供者还需要某种部署和配置。通常情况下,客户端使用运行在容器中的消息提供者-servlet 或 J