XML Namespaces提供了一种xml文档中避免元素名称冲突的方法
XML 名称空间是一组用 IRI/URI 引用标识的名称,这些名称在 XML 文档中用作元素类型和属性名称。
XML 名称空间是由 2006 年 8 月 16 日的名为 Namespaces in XML 的 W3C 建议定义的。XML 标记名应当是全局唯一的,由于性能方面的原因,XML 标记名还应该比较短。为了解决这种冲突,W3C 名称空间建议定义了属性 xmlns,它可以修改任何 XML 元素。如果它存在于元素中,那么它标识此元素的名称空间。xmlns:prefix=namespace //扩展名称xmlns=namespace //默认命名空间
以下是《Namespaces in XML》规范中的部分内如:
1、命名空间分声明:为默认命名名空间和扩展名称
<x xmlns ="http://www.w3.org" //默认命名空间 该命名空间下是属性和元素不用加前缀 xmlns:n2="http://www.w3.org/prefix" > //扩展命名空间 n2 使用该命名空间下是属性和元素要加前缀 </x>
2、声明命名空间 可应用与属性和元素
//作用与属性 <x xmlns:edi='http://ecommerce.example.org/schema'> <!-- the 'taxClass' attribute's namespace is http://ecommerce.example.org/schema --> <lineItem edi:taxClass="exempt">Baby food</lineItem> </x> //作用与元素 <edi:price xmlns:edi='http://ecommerce.example.org/schema' units='Euro'>32.18</edi:price>
2、命名空间约束:不建议使用以X、m、L 开头的本地命名空间名
xmlns属性就是在命名空间中定义的。用于将命名空间URI/IRI 映射为简短的本地常量,方便文档中使用 命名空间。
2、XML Namespaces指定了使用IRI格式的名称作为xml框架文档的名称(框架的标识符(身份证)),注意 已不推荐用URI 作命名空间名称。
3、XML解析器处理命名空间IRI/URI时也仅仅将其作为字符串,URI不是真是存在的,仅仅用来标识xml文档。
4、虽然术语命名空间的URI被广泛使用,W3C推荐规范称之为命名空间的名称。规范并未强制规定命名空间的名称必须使用URI
在推荐规范的1.1版,命名空间的名称变成了国际化资源标识符(IRI)
5、空字符串虽然是合法的 URI 引用,但不能用作命名空间名称。
不推荐在命名空间声明中使用相对 URI 引用(包括同一文档引用)
6、可以将多个命名空间前缀声明为单个元素的属性
<?xml version="1.0"?> <!-- both namespace prefixes are available throughout --> <bk:book xmlns:bk='urn:loc.gov:books' xmlns:isbn='urn:ISBN:0-395-36341-6'> <bk:title>Cheaper by the Dozen</bk:title> <isbn:number>1568491379</isbn:number> </bk:book>
7、默认命名空间声明中的属性值可能为空。在声明的范围内,这具有相同的效果,即没有默认命名空间。
<?xml version='1.0'?> <Beers> <!-- the default namespace inside tables is that of HTML --> <table xmlns='http://www.w3.org/1999/xhtml'>//不为空 <th><td>Name</td><td>Origin</td><td>Description</td></th> <tr> <!-- no default namespace inside table cells --> <td><brandName xmlns="">Huntsman</brandName></td> <td><origin xmlns="">Bath, UK</origin></td> <td> <details xmlns=""><class>Bitter</class><hop>Fuggles</hop>//为空,在声明的范围内效果是相等的 <pro>Wonderful hop, light alcohol, good summer beer</pro> <con>Fragile; excessive variance pub to pub</con> </details> </td> </tr> </table>
8、属性的唯一性
在符合此规范的 XML 文档中,任何标记都不能包含两个属性:
1、具有相同的名称或
2、具有具有相同本地部分的限定名称,并且前缀已绑定到相同的命名空间名称。
<!-- http://www.w3.org is bound to n1 and n2 --> <x xmlns:n1="http://www.w3.org" xmlns:n2="http://www.w3.org" > <bad a="1" a="2" /> <bad n1:a="1" n2:a="2" /> </x>
http://www.w3.org/2001/XMLSchema