|
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 |
|---|
|