基本介绍
命名空间是用来组织和重用代码的。如同名字一样的意思,NameSpace(名字空间),之所以出来这样一个东西,是因为人类可用的单词数太少,并且不同的人写的程式不可能所有的变数都没有重名现象,对于库来说,这个问题尤其严重,如果两个人写的库档案中出现同名的变数或函式(不可避免),使用起来就有问题了。为了解决这个问题,引入了名字空间这个概念,通过使用 namespace xxx;你所使用的库函式或变数就是在该名字空间中定义的,这样一来就不会引起不必要的冲突了。通常来说,命名空间是唯一识别的一套名字,这样当对象来自不同的地方但是名字相同的时候就不会含糊不清了。使用扩展标记语言的时候,XML的命名空间是所有元素类别和属性的集合。元素类别和属性的名字是可以通过唯一XML命名空间来唯一。
在XML里,任何元素类别或者属性因此分为两部分名字,一个是命名空间里的名字另一个是它的本地名。在XML里,命名空间通常是一个统一资源识别符(URI)的名字。而URI只当名字用。主要目的是为了避免名字的冲突。
取名规则
所谓namespace,是指标识符的各种可见範围。C++标準程式库中的所有标识符都被定义于一个名为std的namespace中。
一 :
二: 由于namespace的概念,使用C++标準程式库的任何标识符时,可以有三种选择:
1、直接指定标识符。例如std::ostream而不是ostream。完整语句如下: std::cout << std::hex << 3.4 << std::endl;
2、使用using关键字。 using std::cout; using std::endl; using std::cin; 以上程式可以写成 cout << std::hex << 3.4 << endl;
3、最方便的就是使用using namespace std; 例如: using namespace std;这样命名空间std内定义的所有标识符都有效(曝光)。就好像它们被声明为全局变数一样。那么以上语句可以如下写: cout <
命名空间
在struts2中在struts2里,namespace是package里的一个属性,用来标记action的访问路径。注意:只有package的namespace才能标记路径而不是name属性。在struts2里,存在着一个是默认namespace-,若package不指定namespace,则package里的action就使用默认namespace。若访问action时没有指定namespace则struts2会先在根namespace-/里查找action,找不到再到默认namespace里查找action。再找不到就会报错,也就是说struts2只会查找两层namespace。
在XML中
在XML中命名空间提供避免元素命名冲突的方法。
命名冲突
在XML(标準通用标记语言下的一个子集) 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。
这个 XML 文档携带着某个表格中的信息:
| Apples | Bananas |
这个 XML 文档携带有关桌子的信息(一件家具):
假如这两个 XML 文档被一起使用,由于两个文档都包含带有不同内容和定义的
















