级别: 中级 Xiao Feng Zhao (zhaoxfbj@cn.ibm.com), 资深软件工程师, IBM Qiang Wang (wangq@cn.ibm.com), 资深软件工程师, IBM Susan Malaika, 高级技术人员, IBM Keith Wells, 高级软件工程师,
RoleModel Software, Inc.
2009 年 3 月 02 日 与关系数据不同,IBM® DB2® 9 的 pureXML® 特性用全新的方式支持 XML 数据 —— 将 XML 作为新的数据类型处理,并存储在一个自然的层次结构中。IBM Data Studio 能够创建带有多个 pureXML 参数的 Data Web Services,它可以处理数据库中的 pureXML 实例。在 XML
Forms Generator (XFG) 中提供 pureXML 支持后,就可以将 pureXML 可视化为 XHTML/XForm 以便与用户进行交互。此外,XFG 能够获取 pureXML 实例的已注册的相关 XML Schemas,并将类型信息、验证约束生成为目标 pureXML XHTML/XForm。因此,XFG 中的 pureXML 支持使得构建以 pureXML 形式存储的 XML 实例的表单界面更加容易。
pureXML 和 Data Web Services
将 XML 数据存储为 CLOB 或将其分割为关系表的时代已经过去。与关系数据不同,DB2 9 的 pureXML 特性以全新的方式支持 XML 数据 —— 将 XML 作为新的数据类型处理,并存储在一个自然的层次结构中。pureXML 将 XML 与关系数据无缝集成起来,从而加快了应用程序开发,并且通过高度优化的 XML 索引改善了搜索性能。此外,它还是很灵活的,因为您可以使用 SQL 和 XQuery 查询 XML 数据。以 pureXML 形式存储的 XML 数据可以通过 Data Web Service 机制公开为 Web 服务(参见本系列的 第 1 部分)。
pureXML 支持在 XFG 中如何工作
 |
常用缩略词
- CLOB:字符大对象(Character Large Object)
- SOAP:简单对象访问协议(Simple Object Access Protocol)
- UI:用户界面(User interface)
- WSDL:Web 服务描述语言(Web Services Description Language)
- XHTML:可扩展超文本标记语言(Extensible Hypertext Markup Language)
- XML:可扩展标记语言(Extensible Markup Language)
|
|
首先需要创建一个微型的、基于 DB2 表的 pureXML 应用程序,以演示 XFG 中的 pureXML 支持的详细步骤。表 1 显示了这个表的结构。在演示之前,我们插入一个样例记录作为 pureXML 引用实例。在这个记录中 XML1 列没有绑定到任何模式,而 XML2 列绑定到一个已注册模式 — 如 清单 1 所示的 Express 模式。注意:pureXML 引用实例 是用于通过 XFG 生成 XHTML/XForm 的 XML 模板。据我们所知,XFG 能够从 XML 或 WSDL 生成表单。
表 1. 表结构概览
清单 1. Express 模式
创建 Data Web Services
在 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 参数
生成 XHTML/XForms
从 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 选项,将会看到一个验证编辑器向导页面,在这里可以按照以下步骤配置额外的验证规则。
从数据库获取 pureXML 实例
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 |
|---|
参考资料 学习
获得产品和技术
讨论
作者简介  | 
|  | 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 相关的行业解决方案。 |
 | 
|  | Susan Malaika 是 IBM Information Management Group(属于 IBM Software Group)的一名高级技术人员。她的专长包括 XML、Web 和数据库。她曾在 Global Grid Forum 开发过支持网格环境数据的标准。她与人合作出版了关于 Web 的专著,发表了关于事务处理和 XML 的文章。她是 IBM Academy of Technology 的成员。 |
 | 
|  | Keith Wells 是位于北卡罗来纳州 RTP 的 IBM Emerging Standards XForms 开发的技术和团队主管。目前,Wells 先生是 W3C Forms Working Group 的成员,他正在研究 XForms、新兴软件标准、行业标准和其他基于 XML 的技术。 |
对本文的评价
|