XML的一个卖点是它有助于创建自定义词汇表;也就是说,一个组织可以创建XML词汇表来描述其产品。XML的结构描述或者DTD可以定义结构,这个结构能让其他的组织使用这个词汇表。然而,在定义一个XML实体,而这个实体又与其他组织所定义的实体起冲突的时候,问题就出现了。
XML命名空间的建议是定义一种方法,用去来区别重复元素类型和属性名称。例如,这样的重复会发生在一个文档里,它包含有来自两个不同DTD的元素类型和属性。
XML命名空间是一个组织特有的XML词汇表的集合。它包括元素类型和属性名称。一个唯一的名称,也就是其统一资源指示器(URI),是为命名空间而创建的。这能防止来自不同组织的相似元素发生冲突。命名空间里的任何元素类型或者属性名称都是通过一个分成两部分的名称来唯一识别的:其XML命名空间的名称及其本地名称。这个分成两部分的命名系统是由XML命名空间建议推荐所定义的唯一东西。
命名空间能让你唯一地区分和利用XML词汇表。使用命名空间,你可以
命名空间通常是在XML文档的开始设置的,但是这不是必须的。它的确能够提高可读性,单是命名空间的声明可以被放在XML文档的任何位置。在声明一个XML命名空间的时候,使用以下的句法:
xmlns:prefix=”URI”
这一句的前缀指向一个定义命名空间的URI。这个URI并不用在XML文档处理的过程中;它只在XML查验对结构描述或者DTD的依附时才被参考到。这里是利用XHTML 1.0标准的XML命名空间声明的例子:
xmlns:html=”http://www.w3.org/1999/xhtml”
以下是一个利用这个命名空间的基本XML文档:
<?xml version="1.0" encoding="ISO-8859-1"?>
<html xmlns:html=”http://www.w3.org/1999/xhtml”>
<html:head>
<html:title>
XML Namespace example
</html:title>
</html:head>
<html:body>
<books>
<book type=”hardback”>
<title>Atlas Shrugged</title>
<author>Ayn Rand</author>
<isbn>0525934189</isbn>
</book>
<book type=”paperback”>
<title>A Burnt-Out Case</title>
<author>Graham Greene</author>
<isbn>0140185399</isbn>
</book>
</books>
</html:body>
</html>