+ -
当前位置:首页 → 问答吧 → 新手提问:命名空间怎么理解?

新手提问:命名空间怎么理解?

时间:2011-03-01

来源:互联网

小弟我大概知道命名空间是干什么用的,但是看了几本书,还是没能搞清楚命名空间应该怎么定义,例子好像都是用一个URL,想哪位高手详细解释下,这个东东怎么用的?可以自己随便定义吗?如果一定要用那些定义好的,我又怎么知道用哪个xmlns呢?

作者: ljybasically   发布时间: 2011-03-01

命名空间自然就是为了解决命名冲突而提出的,它的目的就是为了防止命名冲突。

比如香港有个张学友,北京也有个张学友,当两个人同时出现时,你叫“张学友”,别人无法区分你叫的是哪个张学友。

<members xmlns:beijing="http://beijing.com/name"
  xmlns:hongkong="http://hongkong.com/name">
<beijing:张学友>
<身高>180</身高>
</beijing:张学友>

<hongkong:张学友>
<身高>170</身高>
</hongkong:张学友>
</members>

其中 http://beijing.com/name 就是命名空间 URI,
<beijing:张学友> 中冒号前面的 beijing 是代表 http://beijing.com/name 的符号,实际比较时是按照命名空间 URI 比较的。

比如上例中,改为

<members xmlns:beijing="http://hongkong.com/name"
  xmlns:hongkong="http://hongkong.com/name">
<beijing:张学友>
<身高>180</身高>
</beijing:张学友>

<hongkong:张学友>
<身高>170</身高>
</hongkong:张学友>
</members>

那么 beijing 和 hongkong 是一样的,因为它们都是 http://hongkong.com/name。

XML 中的命名空间是可以随意起的,但在 XSLT 中的 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 这个是不能随意起的。

多看看书就能明白了,很简单的概念。

实际上,Windows 中的文件夹也可以理解为命名空间,在同一个文件夹中是不能有两个同名文件或子文件夹的。

作者: kalala2kalala   发布时间: 2011-03-01