XML命名空间详解

命名空间的意义

XML是一种非常好用的标记语言,它具有极好的可扩展性,因此当我们需要同时访问多份XML文档时,有可能会出现这样一种情况:在同一份XML文档中可能出现多个同名的标签和属性,而这些标签和属性意义又是完全不同的,这样如果我们如果不从语法上提供区别,则XML处理器将无法区分它们。

为了解决这个问题XML提供了命名空间的支持。我们想象这样一个场景,在学校的操场上你喊一句“小明”可能一下子会有好几个小明回应你。那你如果喊3年级2班的小明,那可能只会有你找的那个小明回应你。这里我们指定了一个范围(3年级2班),在这个范围内小明是唯一的。说简单一些,要确定一个人仅有名字是不够的,还必须要有一个确定的范围,这个范围就可以理解为命名空间。

回到xml中,加入有这样一个文档,文档中需要保存图书的信息,同时有包含作者的详细信息,可以能会是如下一个文档:

<book>

<title>西游记</title>

<author>

<name>吴承恩</name>

<title>先生</title>

</author>

</book>

这个文档中book有两个子标签title和author,title表示书名,author表示作者的信息。而author中也有一个title属性,这里title只的是头衔称呼,也就是表示的是称吴承恩为先生,但是这里book中的title和author中的title确是两个完全不同的意思,仅仅靠程序是不能区分开这两个title的区别的。