作者: C. M. Saracco, 出处:developerWorks 中国, 责任编辑: 叶江,
2007-07-02 14:19
XML 消息和文档中名称空间的广泛使用对应用程序开发人员如何编写查询有很大的影响。不幸的是,名称空间与流行的查询语言(例如 SQL/XML 和 XQuery)之间的关系往往遭到误解。本文通过几个常见的场景,帮助您理解如何查询包含名称空间的 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 不属于任何名称空间。这是因为在
可以看到,在同一个文档中混合使用不同形式的名称空间声明很容易产生混乱。通常,如果有机会定义将来要使用的 XML 数据,那么在名称空间的使用上应保持一致性。这样可以简化应用程序和查询。接下来的几个小节将探索名称空间的作用域对查询的影响。
……
阅读关于 XML Web服务 WSDL SOAP 标准 XQuery 的全部文章


