IBM® Database tools for Microsoft® Visual Studio 2005 引入一组新的面向 Web 服务的特性,公开了最新的 DB2® pureXML™ 功能。新版本可以大大提高开发人员的生产率。新的 IBM Database Add-ins for Visual Studio 2005 提供的一些新特性简化了 pureXML 的使用。这些特性包括从带标注的 XML 模式创建 Web 服务、XSR 比较和 XSR XSLT 支持。本文介绍了 IBM XML tools for DB2 Version 9.5 及其用法。
前提条件
本文假设您在使用 DB2 for Linux®、UNIX® and Windows® V9.5。还需要安装 IBM Database Add-Ins for Visual Studio 2005 V9.5。可通过下列方式安装 Add-Ins 工具:
下载 DB2 V9.5 Client
下载 DB2 for Linux、UNIX 或 Windows V9.5
要了解 IBM Database Add-ins for Visual Studio 的一般特性,请阅读 “Overview of IBM Database Add-ins for Visual Studio 2005” 和 “Develop proof-of-concepts .NET applications” 系列教程(请参阅 参考资料)。
XML 支持
DB2 V9.1 增加了管理、存储和查询 XML 数据的新特性。其中包括:
XML 数据类型,从而使 DB2 能够以原生的层次格式存储 XML 文档
支持工业标准的 XML 查询语言,包括新的 SQL XML 扩展(也称为 SQL/XML)
根据用户提供的模式验证 XML 数据,从而使应用程序开发人员和数据库管理员保证 DB2 存储 XML 数据的数据完整性约束
这些 XML 功能是 IBM Database Add-ins V9.5 新版本的一部分。对标注 XML Schema、XML Schema Repository (XSR) Compare 和 XSLT Support 这些 Web 服务的支持则属于 V9.5。这些改进增强了 XML 特性的可用性,帮助开发人员提高生产率。
新版本增加了使用 Web 服务作为 XML 模式源的功能。XML 模式可以从 Web 服务的 WSDL 结果中推导出来。新版本增加一个选项,定义 Web 服务作为 XML 模式来源的输入,如 图 2 所示。上一版本中只能使用注册的 XML 模式或者来自文件的文档作为输入。要使用 Web 输入作为 XML 模式源,可按如下步骤操作:
在 Server Explorer 中右键单击 XML Schema Repository 并选择 Add Annotated XML Schema,如图 1 所示:
图 1. 添加带标注的 XML 模式

打开的对话框包括三个选项,如图 2 所示。选择 Use document from a web service 创建新的带标注 XML 模式。
图 2. 选择 XML 模式源

输入 Web 服务,单击 Validate wsdl 按钮验证 Web 服务。验证 WSDL 之后可以选择根节点创建带标注的 XML Schema,如图 3 所示:
图 3. 选择根元素

右键单击对话框添加目标表。选择 Add Target Table 打开包含一组表的对话框。
图 4. 添加目标表

在 Mapping Editor 中选择一个表将 Source XML Schema 中的列映射到目标表。图 5 显示了映射的列:
图 5. 映射列

一旦完成映射,即可通过 Test 选项检查设计,确保源模式和目标表映射正确。如图 6 所示:
图 6. 检查设计

可以通过 View Source 查看生成的源代码。选择 Text Editor 或 XML Designer 查看代码,如下所示:
图 7.查看源代码

生成的代码如图 8 所示:
图 8. 生成的代码

可以定义源 XML 文件,或者在 Test Form 中使用编辑器定义 XML。可定义 Web 服务检验创建的标注 XML 模式。
Test Form 对话框显示测试操作的结果。如图 9 所示:
图 9. 测试窗口

设计检查完成后,可在 Visual Studio 中选择 Save 并保存到数据库中。
单击 Save 打开 Register annotated XML schema 对话框,在这里可定义 XSR 名称、所有者、说明、模式位置和分解选项。如图 10 所示:
图 10. 登记标注 XML 模式

完成保存操作后,注册的 XML 模式就会显示在 Server Explorer 的 XML Schema Repository 节点中。
新建的标准 XML 模式有多种选项。图 11 显示各种不同的选项:
图 11. Server Explorer 中的标注 XML 模式定义

如果像上图那样选择 “Open definition”,将看到图 12 所示的结果。图 12 显示了所选标注模式的定义。其中包括 XML 模式文件名、XSR 名、所有者、分解和各种依赖关系。
图 12. 查看标注 XML 模式的定义

XML 模式资料库比较
跟踪 XML 模式的变化或更新不但困难,而且颇费时间。为此,V9.5 增加了比较 XML Schemas 的功能。用户可以选择一个 XML 模式,然后在上下文菜单中选择 Compare XML Schemas。该选项比较模式,并在操作过程中提示用户两者的差别。
图 13. XML Schema Repository 比较

要比较的模式可在 XSR Object Compare 对话框中选择,如图 14 所示。用户可以定义原 XSR 对象并选择其依赖关系、要比较的 XSR 及其依赖关系。选择要比较的 XSR 对象后单击 Compare。
图 14. 选择要比较的 XSR 对象

如果两个 XSR 对象都包含依赖关系,则填充依赖部分。用户每次只能选择一个文档。比如,用户可以选择主文档或者某个依赖文档进行比较。XSR Object Compare 下拉列表包含所有注册的模式。用户可使用该下拉菜单选择需要的模式。
在 XML Schema Repository Object Compare 对话框中,Diff 按钮可以让用户修改比较选项。比方说,如果用户选择 “Ignore comments”,则两个 XML 模式文档的注释部分不进行比较。
图 15.XSR Object Compare 选项

两个模式的差别保存在一个文件中,并用不同的颜色显示。差异被标记为:增加(added)、删除(removed)、修改(changed)、移动(moved from/to)和忽略(ignored)。
图 16. XSR 比较结果

如果两个比较的 XSR 完全相同,则显示 “Files identical for the given options”。
从标注 XML 模式生成 Web 服务
DB2 V9.1 支持用户根据 XML 文档片断创建并注册标注 XML 模式,并在插入之前按照这些模式验证输入文档。这些改进作为 IBM Database Add-ins for Visual Studio 2005 V9.5 的一部分,提供了使用简单的映射设计器创建和注册标注 XML 模式的一种简便方式。使用映射设计器还可以为标注 XML 模式创建 Web 服务。标注 XML 模式在 DB2 XSR 中登记以后,可用于分解和验证 XML 文档。
图 17. 生成 Web 方法

生成的代码显示在编辑器中,如图 18 所示:
图 18. 生成的 Web 方法

代码生成之后,可选择 F5(Start debustart 选项)进行测试,这样将打开包含 Service Description 和 Shred 方法的浏览器窗口。如图 19 所示:
图 19. 测试生成的代码

XSLT 支持的改进
Generate XML Helper Code 选项在 Solution Explorer 中创建一个包含示例代码的项目。这个新增特性为用户提供了示例代码,可作为编码的基础。该功能可从 Server Explorer 的 XML Schema Repository 节点中调用。只要选择 XML Schema Repository 并单击 Generate XML Helper Code 即可,如图 20 所示:
图 20. 生成示例代码

图 21 显示了调用该功能生成的示例代码:
图 21. 生成的示例代码

生成的代码添加到新建项目 db2XmlHelperSample 中。生成的代码文件 XMLUtil.cs 包括 XSL Transformation 和验证代码。用户可以此为基础创建自己的应用程序。执行的时候,这段代码将显示一个对话框,显示 XML 转换和验证的例子。
图 22. 生成的对话框

单击 Validate Sample 按钮将打开验证对话框和 XML 示例片断。单击 Transform Sample 按钮则显示格式化的报告。希望这个例子能够说明在应用程序中创建和使用代码是多么简单。
结束语
IBM Database Add-ins V9.5 对 XML 功能的新改进公开了最新的 DB2 pureXML 功能,使开发人员能够更快更方便地创建 DB2 应用程序。这些强大的功能将改善用户体验,充分利用 DB2 的 XML 功能。新的面向 Web 服务的特性为利用 DB2 丰富的 XML 功能和创建应用程序提供基本的构造块。