查询包含名称空间的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 责编:豆豆技术应用