- 作者:zhaozj
- 发表时间:2020-12-23 10:53
- 来源:未知
XML 命名空间概述
随着 XML 在 Internet 上的使用日益广泛,能够创建可组合和重用的标记词汇表(方法类似于软件模块的组合和重用)这一优势变得日益重要。如果已经存在一个定义完善的标记词汇表,用于描述硬币集合、程序配置文件或快餐店的菜单,则重用它会比从头设计一个更有意义。将多个现有的词汇表组合在一起,以便创建“事物的整体比它各个部分的总和还大”的新词汇表,也成为 XML 用户开始需要的一个功能。
但是,在同一个文档中,来自不同词汇表的同一个标记(特别是 XML 元素和属性)可能具有不同的语义,这最终会产生问题。XML 的高度扩展性以及它在 Internet 上的广泛应用排除了只是将保留的元素或属性名称指定为此问题的解决方案。
W3C XML命名空间建议旨在创建一个机制,以便 XML 文档中来自不同标记词汇表的元素和属性可以被明确标识和组合,而无需处理所产生的问题。XML 命名空间建议提供了一种方法,以便基于处理要求对 XML 文档中的各个项目进行分区,而无需针对应当如何命名这些项目设置过多的限制。例如,名为 <template>、<output> 和 <stylesheet> 的元素可以出现在 XSLT 样式表中,而对于它们是转换指令还是转换的可能输出没有二义性。
XML 命名空间是一组由 统一资源标识符 (URI) 引用标识的名称,这些名称在 XML 文档中用作元素名称和属性名称。
命名空间声明
图 1. 利用命名空间的 XML 代码片段
命名空间声明通常用于将命名空间 URI 映射到特定的前缀。前缀-命名空间映射的作用域包括命名空间声明作用的元素及其所有的子级。前缀为 xmlns: 的属性声明是命名空间声明。类似属性声明的值应当是作为命名空间名称的命名空间 URI。
在下面的示例 XML 文档中,根元素包含一个将前缀 bk 映射到命名空间名称 urn:xmlns:25hoursaday-com:bookstore 的命名空间声明,它的子元素包含一个 inventory 元素,inventory 元素中包含一个将前缀 inv 映射到命名空间名称 urn:xmlns:25hoursaday-com:inventory-tracking