写在前面:
上路后,就勇往直前;无论有多难,你都要再坚持一下。折腾才不辜负生命给予的上场机会!
~~~~~~~~~~~~~~~~~~~
8.2XML命名空间
我们知道,XML是一种元语言,我们可以使用XML来定义各种各样的应用。在上节中,我们就已经看到了如此多的基于XML的规范,它们都是使用XML定义XMLApplication(XML应用语言)。一般来说,我们可以使用DTD或者XMLSchema来规范化定义每种特别的XML。本书将不再介绍DTD,如果有兴趣的话,可以阅读XML规范或者相关材料去了解其细节;对于XMLSchema,本书将在下一节结合实例进行描述。
无论是使用DTD还是XMLSchema,都是去定义一个专用XML词汇集以及使用这些词汇的规则,这样我们就不可避免地面对这样一些问题:
(1)如何知道我们在一个XML实例文档使用的XML词汇是在哪个XMLApplication中定义的?
(2)当我们混合使用两个XMLApplication的词汇集时,如果两个词汇集中有相同名字的元素名(当然它们表示的是不同的含义),如何区分它们?
同样,这些问题也会发生在我们自己来定义XML标签的场合中。比如说,如果你考虑使用monitor这样的元素,那么它在不同的环境将有几种不同的意思。如果你在计算机外围设备描述中使用,monitor可能指的是计算机屏幕,同时在音乐制作间里扬声器通常也叫做monitor。如果这里有一个专用于描述学校信息的数据模式,monitor可能指的是一个被赋予几种职责的学生,然而在原子核电站,monitor可能放在报警的地方。即便意思相同,在两种不同的定义中,其内容也会发生改变。
面对元素的这些潜在的不同用途,我们需要一种方法去区分元素的特定用途,特别是我们在同一个XML文档里混用不同的词汇。为了解决这个问题,W3C提出了称为XML命名空间的规范,它允许我们在一个命名空间定义元素的前后联系,同时可以使用不同的命名空间来区分不同的XML词汇集中的元素名。
年1月14日,XML命名空间成为了W3C的推荐标准的程度。这一节将主要介绍XML命名空间。命名空间帮助XML词汇表设计者去将复杂的问题分解成细小的问题,以及根据需要混合多义词来描述单一XML文档里的问题。模式允许词汇表设计者去建立更多而准确的词汇定义。
8.2.1命名空间
XML命名空间是解决多义性和名字冲突问题的方案。根据W3C组织的推荐标准XMLNamespace(年1月14日)中的描述,XML命名空间是一种名称的集合,通过一种URI(UniformResourceIdentifier)引用来标识,作为元素类型和属性名称,它应用于XML文档。
命名空间是一组具有结构的名称的集合,这听起来像一个DTD,的确,一个DTD可以是一种命名空间(因为一个DTD定义了一个XML词汇集)。在这种情况下,URI可以是在你的服务器上的地址,如