| 文章首页 |
|---|
| XML Namespace命名空间上手指南 |
| 什么是命名空间(Namespace) |
| XML为什么需要命名空间? |
| XML命名空间的语法规则 |
| 解析器是怎样处理XML命名空间的? |
| 命名空间和DTD |
| 命名空间和XML模式 |
为了让我们更形象的理解什么是命名空间,SVG中国先让大家看看前人对命名空间的比喻吧,之后我们再讲标准的什么是命名空间。
比喻1:
把类比喻成文件的话,命名空间就是文件夹。没有文件夹的话,文件照样可以工作,但是就容易出现“重名”的问题,而且不好组织多个文件。
比喻2:
名字空间嘛,打个比喻吧,张村有个叫李三,王村也有个李三.现在上级要到李三家去,那你肯定得要知道,是到张村找,还是到王村找呢?这里得张村和李就相当于名字空间。
比喻3:
把类比作一个人,那么吃饭就是人的一种方法或函数。
你住的房间就是命名空间,这样别人找你的时候就知道上哪个房间找你了,但这房间里不一定会只有你一个人。
看完这三个非常形象的比喻,你应该有点头绪了吧?恭喜你!后面内容你可以结合上面的比喻,就会非常容易理解什么是命名空间了。
命名空间是为了把一些类和类的实例更好地管理而定义的把这些类和实体集合起来的一个团体,它是_Namespace system class的一个实例,或者是_Namespace类的一个派生类,_Namespace类只有一个属性:Name。通过这个属性用户可以把某个命名空间和其他的命名空间分开来,注意命名空间的Name不能包括头缀和后缀的下划线。
命名空间可以相互联系和组织成一个具有任意层次的由类和类的实例组成的网状结构,这种结构有点象文件系统的树状结构,在同一个层次的情况下,命名空间必须具有互异的名称。
为了表示它们的层次结构你可以用右下线表示这种关系,如下:
Namespace1\Namespace2\Namespace3.....\LastNamespace
虽然说这些命名空间可以表示成这样的层次结构,但是,这些命名空间之间没有类的继承关系,也就是说,子的命名空间中的类不会自动继承父的命名空间中的类。
通常情况下,一个命名空间包含了在某种环境下一系列的类和类的实例。例如那些在Win32下定义和运行的类即使是和其他的命名空间里的类具有相同的名字也不会出现冲突,然而在建立一个新的类的时候,最好还是不要和已经建立的类的名字相同,这为将来WMI发布减少了一些问题。
所有的WMI包含了下面这些预定义了的命名空间:
- root
- toor\default
- root\cimv32
root 命名空间是专门为包含其他的命名空间而设计的命名空间,WMI把其他的命名空间都放在这个命名空间下面。toor\default命名空间包含了基本上系统的类,而root\cimv32命名空间主要是包含了在Win32环境下运行的一些类。比如:Win32_logicalDisk和 Win32_OperatingSystem。很多操作基本上都是在root\cimv32命名空间下发生的。
如果你喜欢这篇文章,请阅读本文相关的下列内容:
