本文介绍一些在基于 Java™ 的 Web 服务工具包中不直接受支持的 XML 模式定义(XML Schema Definition,XSD)特性。了解如何通过创建 Java 友好的中间 XSD 或通过在代码中强制执行 XSD 约束来处理这些特性。
许多应用程序需要以一种或多种使用 XSD 指定的行业标准消息格式表示数据。XSD 通常是指定行业标准消息格式的理想方法,因为它跨平台和编程语言受到广泛支持(无论是本机支持还是通过库支持)。但是,即使拥有此支持,由于特定于应用程序的数据结构与 XSD 之间的特性不匹配,将存储在这些特定于应用程序的数据结构中的数据转换为符合 XSD 的消息(通常为 XML 消息)会带来挑战。
图 1. 在两种特定于应用程序的数据结构之间提供公共消息模型的行业标准 XSD(中心)
在实现基于 Java 的 Web 服务时,这些特性不匹配会导致很难使用基于 Java API for XML-based RPC (JAX-RPC)、Java API for XML Web Services (JAX-WS) 或同时基于这两者的工具包,自动化从特定于应用程序的数据结构到 XML 消息的映射。
由于 XSD 与编程语言无关,它具有许多在 Java 对象中不直接受到支持的特性。此类特性的示例包括 xsd:choice
和 xsd:group
数据类型以及 xsd:restriction
属性。本文向您介绍如何创建消除这些数据类型的 Java 友好的 XSD。您将使用基于 XSL Transformation (XSLT) 的映射,从而将基于 Java 友好的(内部)XSD 的消息转换为全功能的(外部)XSD。对于本文中的特定示例,外部 XSD 为 Postsecondary Electronic Standards Council (PESC) 的 Common Record: CommonLine (CRC) 助学贷款消息标准。
本文中用于创建与 CRC 1.4 XSD 相对应的 Java 友好的 XSD 的技术可应用于任何太复杂而在基于 Java 的 Web 服务工具包中不直接受支持的 XSD。首先让我们看一下大致步骤:
本文转自IBM Developerworks中国