将 XML 数据存储为 CLOB 或将其分割为关系表的时代已经过去。与关系数据不同,DB2 9 的 pureXML 特性以全新的方式支持 XML 数据 —— 将 XML 作为新的数据类型处理,并存储在一个自然的层次结构中。pureXML 将 XML 与关系数据无缝集成起来,从而加快了应用程序开发,并且通过高度优化的 XML 索引改善了搜索性能。此外,它还是很灵活的,因为您可以使用 SQL 和 XQuery 查询 XML 数据。以 pureXML 形式存储的 XML 数据可以通过 Data Web Service 机制公开为 Web 服务(参见本系列的 第 1 部分)。
首先需要创建一个微型的、基于 DB2 表的 pureXML 应用程序,以演示 XFG 中的 pureXML 支持的详细步骤。表 1 显示了这个表的结构。在演示之前,我们插入一个样例记录作为 pureXML 引用实例。在这个记录中 XML1 列没有绑定到任何模式,而 XML2 列绑定到一个已注册模式 — 如 清单 1 所示的 Express 模式。注意:pureXML 引用实例 是用于通过 XFG 生成 XHTML/XForm 的 XML 模板。据我们所知,XFG 能够从 XML 或 WSDL 生成表单。
表 1. 表结构概览
清单 1. Express 模式
在 DB2 数据库中创建表之后,则可以使用 Data Studio 来创建包含 SQL 语句的 SQL 文件:
INSERT INTO XFGDEMO (ID, NAME, XML1, XML2) VALUES (:id, :name, :purexml1, :purexml2)
然后创建 Data Web Services。查看 参考资料 获得关于从 SQL 文件创建 Data Web Services 的介绍。在创建 Web 服务样例时,生成一个名为 insertRecord.wsdl 的 WSDL 文件。该文件类似于 清单 2 中的文件。可以在生成的 WSDL 文件中看到两个 pureXML 参数,即 PUREXML1 和 PUREXML2。这两个 pureXML 字段绑定到 xsd:anyType,在随后的步骤中将使用 XFG 将它们可视化为 XHTML/XForm 片段。
清单 2. WSDL 文件中的 pureXML 参数
从 Data Studio 创建和部署 Data Web Services 之后,就可以使用 XFG 生成与服务进行通信的 XHTML/XForms 和相应的 XML 文件。
选择 insertRecord.wsdl 文件,右键单击 WSDL 文件,然后从 XForms Generator 菜单选择 Generate XHTML/XForms 向导。图 1 显示了该向导的第一个步骤:
图 1. XFG 向导中的第一个步骤
在 XFG 中,可以将额外的验证约束附加到 pureXML 字段。如果选择 Generate validation information 选项,将会看到一个验证编辑器向导页面,在这里可以按照以下步骤配置额外的验证规则。
XFG 支持两种在 WSDL 中可视化 pureXML 字段的方式。第一种方式是在本地文件系统中使用 pureXML 实例,然后从本地文件系统读取绑定模式。第二种方式是在数据库中使用 pureXML 实例,然后从 XML 模式存储库(XML Schema Repository,XSR)中获取已注册模式。如果选择了 Retrieve PureXML instance from Database 复选框,则可以使用这两种方式;如果没有选择,则仅能在文件系统中使用模式。选中这个复选框,然后单击 Next。
在下一个屏幕中,选择 insertRecord 操作然后单击 Next。此时,将看到 Configure PureXML 向导页面,如 图 2 所示。在这里,XFG 能够识别所有 pureXML 参数。您需要将 pureXML 实例指定为引用以生成可视的 XHTML/XForm,然后从数据库获取这个 pureXML 实例。请注意,对于 pureXML 实例的引用,PUREXML1 没有绑定到任何模式,而 PUREXML2 绑定到 清单 1 所示的已注册模式中。
图 2. 配置 PureXML 向导页面
单击 Next 就会出现 Validation Editor 屏幕。在这里,添加一些针对 PUREXML1 的验证规则。PUREXML1 不绑定到任何模式。
图 3. 验证编辑器 editor
继续该向导,最后单击 Finish 生成 XHTML/XForms。生成的 XHTML 文件是 insertRecord.xhtml。图 4 显示了生成的表单(参见图 4 的 大图):
图 4. 在 Firefox 中显示生成的 XHTML/XForm
在 清单 3 中生成的 XHTML 表单片段中,可以看到两个 fieldset 标记。每个标记都是从数据库中特定的实例生成的,并且对应 清单 2 的 WSDL 文件中的 pureXML 参数。
清单 3. pureXML XForm 片段
在清单 4 中,XFG 为已注册模式生成绑定信息(您已经在 清单 1 中见过该模式)。
清单 4. 从已注册模式生成的 pureXML 绑定信息
同时,XFG 还在 清单 5 中为您在向导中设置的 PUREXML1 验证规则生成绑定信息。
清单 5. 从 验证规则生成的 pureXML 绑定信息
在生成的 XHTML/XForm 中,您将看到 3 个 XForm 模型:
- 第一个模型是全局性的,它与 WSDL 操作
insertRecord对应。这个模型仅包含 4 个元素:ID、NAME、PUREXML1和PUREXML2。这些元素映射到 Data Web Services 中的 4 个参数名。 - 第二和第三个模型是针对 PUREXML1 和 PUREXML2 参数的 pureXML 模型,可从数据库或本地文件系统获取它们。在 XHTML/XForm 中的这两个 pureXML 字段集的数据变更都可以应用到这两个模型。
在提交到 Data Web Services 之前,XFG 将通过生成的客户端 XHTML 脚本把这两个 pureXML 模型合并为第一个全局性 XForm 模型,如 清单 6 所示。在表单提交之后,这个脚本在客户端被作为 XHTML 表单的一部分执行。
清单 6. 模型合并 XHTML 脚本
合并后的数据模型,如 清单 7 所示,是一个完整的 SOAP 消息,客户端直接将它提交到 Web 服务,以使用来自表单的数据将一个新记录插入到表中。
清单 7. 合并后的模型
在本文,我们简单描述了 XFG 中的 DB2 pureXML 支持。在 XML Forms Generator (XFG) 中添加 pureXML 支持之后,就可以为用户将 pureXML 可视化为基于 XHTML 的 XForm。此外,还可以基于 XFG 获取 pureXML 实例的已注册的相关 XML Schema 并生成类型信息。还可以获取验证约束并将其添加到目标 pureXML XHTML/XForms。XFG 中的 pureXML 支持使得构建以 pureXML 形式存储的 XML 实例的表单界面更加容易。在这个系列中,我们介绍了 XForms、XFG、Data Studio、Web services 和 pureXML 特性支持。学习了这两篇文章之后,您就可以轻松使用 XFG 为后端 Data Services 生成有效的 XHTML/XForms UI,以构建完整的数据服务解决方案。
| 描述 | 名字 | 大小 | 下载方法 |
|---|---|---|---|
| 本文清单 1 的代码样例 | Listing1.zip | 1KB | HTTP |
学习
- 您可以参阅本文在 developerWorks 全球网站上的 英文原文。
- Data Web Services:访问 IBM 数据库服务器的新方式 —— 构建 Web 服务(Vijay Bommireddipalli,developerWorks,2007 年 12 月):这篇文章概述了 Data Web Services,从中可以学习如何构建 Data Web Service,以及生成对数据库的基于 Web 服务的访问。
- DB2 XML wiki:在这里找到与 DB2 9 和 pureXML 相关的论文、演讲稿和演示。作者推荐以 DB2 Demo program(George Baklarz,developerWorks,2008 年 2 月更新)作为起点。
- XML Forms Generator/Data Studio Overview(alphaWorks,2008 年 11 月):使用这个 Eclipse 插件生成遵循 XForms 1.0 标准的表单。
- Using DB2 XML and Java(Anson Kokkat,developerWorks,2006 年 10 月):查看这个教程,它描述 DB2 XML 在 Java 环境中的发展。
- XForms 教程(W3 Schools):学习在应用程序中使用 XForms,它是下一代的 HTML 表单。
- DB2 pureXML wiki:随时关注 DB2 pureXML 的最新进展。
- developerWorks 上的 XForms 专区:查看更多关于 XForms 的信息。
- 将 Web 服务用于电子交易的单点登录:获取提高 SOA 和 Web 服务方面的技能所需的资源。
- Information Management 专区:访问这个站点,并找到如何将 SOA 和 Web 服务与 IBM Information Management 结合使用的学习资料。
- IBM XML 认证:了解如何才能成为一名 IBM 认证的 XML 和相关技术的开发人员。
- XML 技术库:查看 developerWorks XML 专区获得大量的技术性文章、技巧、教程、标准和 IBM 红皮书。
- developerWorks 技术活动和网络广播:随时关注技术的最新进展。
- 技术书店:查看有关这些主题和其他技术主题的图书。
- developerWorks podcasts:收听针对软件开发人员的有趣访谈和讨论。
获得产品和技术
- DB2 Express-C:下载 DB2 Express 9 数据库服务器的免费试用版。
- DB2 for Linux™, UNIX™, and Windows:下载免费的交互式数据服务器。它将 DB2 的高性能和易用性与 XML 的自我描述特性结合起来。
- XML Forms Generator/Data Studio on alphaWorks:下载这个基于标准的、数据驱动的 Eclipse 插件。它使用嵌套在 XHTML 文档中的 XForms 标记从 XML 数据实例或 WSDL 文档生成有效的表单。
- IBM Data Studio:下载集成数据库开发环境的免费试用版。它能够加快应用程序的设计、开发和部署,同时又能提高数据访问的效率和性能。
- IBM 产品评估试用软件:使用可直接从 developerWorks 下载的 IBM 试用软件构建您的下一个项目,包括来自 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。
讨论
- 参与论坛讨论。
- Data Studio Team
blog:查看这个 blog 并加入 Data Studio Space。
- XML 专区讨论论坛:参与几个与 XML 有关的讨论。
- developerWorks blogs:查看这些 blog 并加入 developerWorks 社区。

Xiao Feng Zhao 是 China Emerging Technology Institute, China Software Development Laboratory 的资深软件工程师。他专注于 IBM Incubator 项目。他感兴趣的领域包括 Web 2.0、SOA、J2EE 和 Web 技术。目前,他从事于 Ajax 和 SOA 标准的 PoC 开发。

Qiang Wang 是 China Technology Institute, China Software Development Laboratory 的技术主管。他专注于 IBM Incubator 项目和与 SOA 相关的东西。他感兴趣的东西包括 J2EE、SOA、MDA/MDD、AOP、RUP 和项目管理。目前,他负责领导一些与 SOA 相关的行业解决方案。

