孙鑫 XML培训视频 笔记 名称空间.doc
文本预览下载声明
XML名称空间
一个XML文档中可以包含许多元素与属性,当我们使用其他人的XML文档,或者在文档中使用多个DTD文件时,就有可能碰到名称相同的元素,而这些名称相同的元素可能代表了完全不同的含义。比如:title可以用于表示标题,也可以永远表示某个人的头衔;table可以用于表示表格,也可以用于表示桌子。当这些具有相同名称不同含义的元素混合到一个文档中时,就会造成理解和处理上的混乱。为了解决这个问题,就要用到W3C发布的另一个推荐标准——XML名称空间。/TR/REC-xml-names
声明名称空间
名称空间通过使用一系列的保留属性来声明,这种属性的名字必须是以xmlns或以xmlns:作为前缀。与其他任何XML属性一样,这些属性可以直接或以缺省的方式给出。
声明有两种形式:
第一种:
元素名 xmlns:prefixname=”URI”
元素名是指你在哪一个元素上声明名称空间,在这个元素上声明的名称空间适用于声明它的元素和属性,以及该元素内容中的所有元素及其属性。xmlns:prefixname作为该元素的属性名,属性的值是一个URI引用,是表示该名称空间的名称空间名字。其中prefixname给出名称空间前缀的名字,该前缀用于将元素及属性的名字与URI关联在一起。要注意,在这样的声明中,名称空间的名字不能为空(“”)。如果有两个URI,其组成字符完全相同,可以认为它们标识了同一个名称空间。
来自于XML名称空间的名字可以作为限定名(qualified names)出现,限定名包含了一个以冒号(:)分隔的名称空间前缀和一个本地部分(local part)。映射到URI引用的名称空间前缀选择了一个名称空间。
hr xmlns:hr=”/hr”
hr:employee
名称空间前缀可以是不包含冒号的任何合法的xml名称。
在声明名称空间时,有两个前缀是不允许使用的,它们是xml和xmlns。xml前缀只能用于XML1.0规范中定义的xml:space和xml:lang属性,前缀xml被定义为与名称空间名字/XML/1998/namespace绑定。前缀xmlns仅仅用于声明名称空间的绑定,它被定义为与名称空间名字/2000/xmlns绑定。
名称空间推荐标准中指出,在名称空间声明中,使用相对URI引用已经被废弃了(不赞成使用)。
第二种:
元素名 xmlns =”URI”
这种声明形式没有给出名称空间的前缀名,URI所标识的是缺省的名称空间。在这样的缺省声明中,属性值可以为空(“”)。
例子:
hr xmlns=”/hr”
表示声明了一个缺省的名称空间,hr元素及其内容中所有的没有前缀的元素都属于/hr所标识的名称空间,除非被hr元素内容中其他的缺省名称空间声明所覆盖。
在声明名称空间时,选择的URI不需要指向时间的内容,在URI所标识的位置上,可以不存在任何东西。在名称空间声明中的URI,只是形式上的标识符,其唯一目的是提供一个唯一的名字。
名称空间在元素和属性中的运用
元素中运用:
?xml version=”1.0” encoding=”gb2312”
books xmlns:people=”/people”
book
titilejsp深入编程/title
author
people:name张三/people:name
people:title作家/people:title
/author
/book
book
titilexml入门/title
author
people:name李四/people:name
people:title教师/people:title
/author
/book
/books
进一步:
?xml version=”1.0” encoding=”gb2312”
bks:books xmlns:people=”/people”
xmlns:bks=”/books”
bks:book
bks:titilejsp深入编程bks:title
bks:author
people:name张三/people:name
people:title作家/people:title
/bks:author
/bks:book
bks:book
bks:titilexml入门/bks:title
bks:author
people:name李四/people:name
people:title教师/people:title
/bks:author
/bks:b
显示全部