1、第第4 4章章 XMLXML名称空间名称空间熟练掌握:熟练掌握:在根元素和子元素中声明默认名称空间的方法。在根元素和子元素中声明默认名称空间的方法。掌握:掌握:XMLXML名称空间的声明语法格式。名称空间的声明语法格式。了解:了解:名称空间的基本概念及其声明名称空间的作名称空间的基本概念及其声明名称空间的作用。用。名称空间就是逻辑上相关的一组名称,在名称空间名称空间就是逻辑上相关的一组名称,在名称空间中,中,任何名称都必须是唯一的任何名称都必须是唯一的,并且按照名称空间的规,并且按照名称空间的规则来定义,保证在则来定义,保证在XMLXML文档中不出现歧义,避免给文档中不出现歧义,避免给XMLX
2、ML解解析器造成混乱。析器造成混乱。4.1 4.1 名称空间的基本概念名称空间的基本概念为什么要用名称空间?为什么要用名称空间?一个一个XMLXML文档中可以包含许多元素与属性,当使用其文档中可以包含许多元素与属性,当使用其他他XMLXML文档,或者在文档中使用多个文档,或者在文档中使用多个DTDDTD文件时,就有可文件时,就有可能碰到名称相同的元素,而这些名称相同的元素也可能能碰到名称相同的元素,而这些名称相同的元素也可能代表了完全不同的含义,当这些具有相同名称不同含义代表了完全不同的含义,当这些具有相同名称不同含义的元素混合到一个文档中,的元素混合到一个文档中,XMLXML解析器不能够识别
3、,会使解析器不能够识别,会使系统解析时造成混乱。要解决这个问题,就需要引入名系统解析时造成混乱。要解决这个问题,就需要引入名称空间机制对名称进行区分,这样就不会在称空间机制对名称进行区分,这样就不会在XMLXML文档中造文档中造成歧义,从而增加了成歧义,从而增加了XMLXML文档的可读性。文档的可读性。在在XMLXML规范中,采用规范中,采用WebWeb上某个唯一的上某个唯一的URIURI(统一资(统一资源标识)来定义不同的名称空间。这个源标识)来定义不同的名称空间。这个URIURI可以是可以是URLURL,也可以是也可以是URNURN(统一资源名称),并将其与某个特定的(统一资源名称),并将
4、其与某个特定的名称空间标识符对应起来。名称空间标识符对应起来。URIURI(uniform resource identifieruniform resource identifier)统一资源标识统一资源标识 使用名称空间必然要使用使用名称空间必然要使用URIURI(如(如Xmlns:Xmlns:名域空名域空间的名称(名域前缀)间的名称(名域前缀)=名域的名域的URIURI)主要用来界定资源对象的名称,该资源对象一主要用来界定资源对象的名称,该资源对象一经命名后即具有唯一性,且具永续性经命名后即具有唯一性,且具永续性URIURI有两种表示:有两种表示:URNURN和和URLURL 在在XML
5、XML文档中,名称空间使用文档中,名称空间使用“前缀法前缀法”来解决名称来解决名称冲突问题,就是在容易出现冲突的元素或者属性原来的名冲突问题,就是在容易出现冲突的元素或者属性原来的名称前面加上不同的前缀,从而使其工作在不同的名称空间称前面加上不同的前缀,从而使其工作在不同的名称空间下,这样一来就避免了混淆。下,这样一来就避免了混淆。简单的说,制定简单的说,制定XMLXML名称空间标准的初衷是为了名称空间标准的初衷是为了解决解决XMLXML文档中命名的冲突问题文档中命名的冲突问题。4.2 4.2 名称空间的声明名称空间的声明XMLXML名称空间的声明语法格式:名称空间的声明语法格式:=URI 各
6、参数说明如下:各参数说明如下:xmlnsxmlns:指定名称空间的关键字。:指定名称空间的关键字。名称空间前缀名称空间前缀:为了方便命名,用来标识字符串:为了方便命名,用来标识字符串URIURI。前缀的命。前缀的命名规则和元素的命名规则相同。名规则和元素的命名规则相同。URIURI:用来标识资源的字符串。:用来标识资源的字符串。定义名称空间时,定义名称空间时,包含相同前缀的子包含相同前缀的子元素要与相同的名元素要与相同的名称空间匹配。称空间匹配。名称空间声明时,名称空间声明时,没有前缀说明的为没有前缀说明的为默认的名称空间声默认的名称空间声明。明。不允许把前缀映射到空不允许把前缀映射到空字符串
7、上。字符串上。名称空间可名称空间可以在元素中以在元素中使用。使用。12345名称空间可以使名称空间可以使用到属性当中。用到属性当中。需要注意的几点:需要注意的几点:默认的名称空间指的是在默认的名称空间指的是在XMLXML的的xmlnsxmlns属性声明名称空间属性声明名称空间时,不指定前缀,也就是没有前缀名。时,不指定前缀,也就是没有前缀名。在在XMLXML文档中,没有出现前缀的元素或者属性就遵循默文档中,没有出现前缀的元素或者属性就遵循默认的名称空间,除非它们受到另外一个名称空间的限制认的名称空间,除非它们受到另外一个名称空间的限制。4.3 4.3 默认的名称空间默认的名称空间 默认名称空间
8、声明的基本格式:默认名称空间声明的基本格式:=URI 一个默认的名称空间可以定义名称空间的元素或者其一个默认的名称空间可以定义名称空间的元素或者其子元素,也可以在默认名称空间声明中使用一个空属性值子元素,也可以在默认名称空间声明中使用一个空属性值来取消默认的名称空间。来取消默认的名称空间。如果元素中声明了默认名称空间,在它的子元素中还如果元素中声明了默认名称空间,在它的子元素中还可以再次声明其他的默认名称空间,但在子元素中声明的可以再次声明其他的默认名称空间,但在子元素中声明的默认名称空间只能作用于该子元素上默认名称空间只能作用于该子元素上。如果在一个默认的名称空间声明中,如果在一个默认的名称空间声明中,URIURI的值为空,那的值为空,那么说明这个元素不在任何名称空间内么说明这个元素不在任何名称空间内。第4章结束!Thank you!