频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

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

来源: 作者: 出处:巧巧读书 2007-10-09 进入讨论组

  对于应该如何使用名称空间这个问题,很多 IT 专家意见不一。有人提倡在文档和模式中经常、广泛地使用名称空间,而其他人则认为应该慎用或者不用。如果您对这样的争议感兴趣,那么请参阅 参考资料 小节。在本文中我无意介入这场争论。我只准备解释如何查询包含名称空间的 XML 数据,因为您在工作当中很可能会遇到名称空间。

  那么,什么是名称空间?名称空间是由一些惟一的 XML 元素名称和属性名称组成的一个集合,这些名称由一个统一资源标识符(Uniform Resource Identifier,URI)标识。这些 URI 常常看上去像是 Web 站点 URL(也就是说,它们包括像 http://www.w3.org 这样的域名),但有时候也使用统一资源名称(Universal Resource Name,URN)。不管是何种情况,URI 并不真正从指定位置检索数据。如果 URI 以 URL 的形式出现,那么甚至不需要引用一个实际的 Web 页面;它可以是一个 “伪” URL,只是作为一个标识符。

  XML 名称空间使用 xmlns 关键字来声明。清单 1 显示了用于一个 XML 文档中元素的两个有效名称空间声明。<employee> 有一个基于 URL 的 URI,而 <partner> 元素则有一个基于 URN 的 URI。

  清单 1. 示例名称空间声明. . .
<employee xmlns="http://www.bogus.com/employee/1.0"/>
<p: xmlns:p="urn:xmlns:bogus:partner1.0"/>
. . .

  注意到这两个名称空间声明在指定的 URI 类型上的区别吗?实际上,<partner> 元素包括一个定义且包含一个前缀(在这个例子中为 p)的名称空间。名称空间前缀的使用是可选的,但是这更像是一种风格上的选择。如果一个元素有名称空间前缀,那么它就属于为前缀定义的名称空间;但是,它的子元素除非也加前缀,否则不属于这个名称空间。包含名称空间声明但没有名称空间前缀的元素(例如前一个例子中的 <employee> 元素)属于被声明的名称空间。而它们的子元素除非特别覆盖名称空间,否则也属于这个名称空间。最后,如果无前缀的元素没有显式的名称空间声明,那么将被绑定到作用域内的默认名称空间。如果没有那样的绑定,那么该元素就不属于任何名称空间。

更多文章 更多内容请看SQL Server 索引和查询专题XML详解开发应用专题,或进入讨论组讨论。
更多专题 【深 度 阅 读】 相 关 文 章
    收藏此文】【 】【打印】【关闭
    相关图文阅读
    频道图文推荐
    健 康 咨 询
    时 尚 咨 询
    巧巧读书宗旨
    相关专题
    讨论组问题推荐
    站内各频道最新更新文档
    站内最新制作专题
    热门关键字导读
    Photoshop教 程照片处理 照片制作 PS快捷键 抠图
    计 算 机 故 障XP系统修复
    艺 术 与 设 计设计 流媒体 设计欣赏 边框
    计 算 机 安 全ARP
    站内频道文章精选
    巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章