在文章 XML命名空间深度解析 —— 命名空间简介 中对XML命名空间进行了简单介绍,本文将会对命名空间在XML1.0 和 XML1.1中的区别进行介绍。让我们从一个小的例子开始命名空间之旅。
例1: XML1.0中命名空间定义为空
<XML version="1.0">
<root xmlns:pre="">
</root>
在该例中,在通过xmlns绑定命名空间的时候,命名空间的url为空,即"", 如果试图去解析该文件,将会报出一个错误:
The value of the attribute "prefix="xmlns",localpart="pre",rawname="xmlns:pre"" is invalid. Prefixed namespace
bindings may not be empty.
报错的原因是在XML1.0规范明确规定不允许把prefix绑定到空的URL上,所以报错。那在XML1.1中会怎样呢?
例2: XML1.1中命名空间定义为空
<XML version="1.1">
<root xmlns:pre="">
</root>
解析可以发现,没有报错,因为在XML1.1中是允许通过把URL设置成空来解除命名空间和prefix的绑定。