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

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

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

  考虑清单 2 中的例子:

  清单 2. 一个含多个名称空间的示例 XML 文档<mydoc>
  <employee xmlns="http://www.bogus.com/employee/1.0">
     <name>John Jones</name>
      . . .
  <employee>
  <p:partner xmlns:p="urn:xmlns:bogus:partner1.0"/>
      <name>Acme Computer Corp.</name>
      . . .
   </p:partner>
   <department>
  <name>Sales</name>
  . . .
   </department>
</mydoc>

  在这个例子中,employee 元素的子元素 name 属于 <employee> 元素中声明的默认名称空间(http://www.bogus.com/employee/1.0)。但是,partner 元素的子元素 name 不属于任何名称空间。虽然它是 <partner> 的子元素,但这个 <name> 元素没有继承其父元素的名称空间,因为那个名称空间是用一个前缀声明的。为了使 partner 的 name 信息也被包括在其父元素所在的名称空间内,可以重写这一行,如下所示:

  清单 3. 修改后的包括名称空间前缀的元素       <p:name>Acme Computer Corp.</p:name>

  最后,department 元素的子元素 name 不属于任何名称空间。这是因为在 <department> 元素中没有声明名称空间,它不会被绑定到默认名称空间。

  可以看到,在同一个文档中混合使用不同形式的名称空间声明很容易产生混乱。通常,如果有机会定义将来要使用的 XML 数据,那么在名称空间的使用上应保持一致性。这样可以简化应用程序和查询。接下来的几个小节将探索名称空间的作用域对查询的影响。

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

正在加载评论...