查询包含名称空间的XML数据

http://tech.ddvip.com   2007年07月03日    社区交流

内容摘要:如果想学习关于 XQuery 与 SQL/XML 的基础以外的更多知识,那么必须理解文档和消息中的 XML 名称空间对查询的语义的影响。否则,就可能收到意外的结果。幸运的是,学习如何查询包含名称空间的 XML 文档并不难。本文提供了一些例子来帮助您起步。

  这些 XML 文档跟踪关于业务伙伴的相同信息,包括公司名称、行业领域和业务伙伴代表。但是,每个文档在名称空间的使用上不尽相同,有的包含多个名称空间。为了演示名称空间对以后查询的影响,我特意以不同方式使用名称空间。

  下面的查询都是从 DB2 命令行处理程序发出的。从 DB2 命令窗口中,发出以下命令来设置一个命令行环境,在此环境中查询语句要以一个百分号(<%>)结束,且 XML 输出以一种易于阅读的方式显示:

  清单 5. 设置 DB2 命令行环境 db2 –td% -i –d

  <%> 不是默认的终止符。在命令行环境中,必须覆盖默认的终止符(一个分号,即“;”),因为默认终止符在 XQuery 中是保留的,用于将序言(例如名称空间声明)与查询的主体分隔开。

  如果喜欢,也可以使用 DB2 Control Center 的 Command Editor 来发出查询。

  在 SQL/XML 和 XQuery 中使用 XPath 表达式

  当查询包含名称空间的 XML 数据时,需要在路径表达式中指定适当的名称空间信息。SQL/XML 和 XQuery 都支持允许在 XML 层次间导航的 XPath 表达式。

  现在,让我们来看一些简单的任务,探索如何编写 XQuery 查询来检索所需的信息。我还将展示如何编写符合需求的 SQL/XML 查询。

  案例 1:返回所有 XML “company” 数据

  第一个任务很简单:检索关于所有业务伙伴的 “company” 数据。如果想获得所有业务伙伴的 XML 数据,那么可以编写一个简单的 SQL 查询:

  清单 6. 检索所有公司数据的 SQL 查询 
  select details from partners %

  但是假设想获得公司数据的一个序列。为此,需要编写一个 XQuery。如果没有使用过名称空间,那么可能习惯性地编写一个这样的查询:

来源:ibm.com    作者:C. M. Saracco    责编:豆豆技术应用

正在加载评论...