XML命名空间详解

默认的命名空间

这样我们在文档中就可以使用a和b两个前缀来区分不同的命名空间中的标签了。但是实际上咱们所使用的前缀并不友好,为了方便识别在开发中尽量使用便于识别的前缀,比如book,author等。

采用以上的方式声明命名空间已经可以很好的解决了咱们的问题,但是这种方式显得有一些麻烦,因为每一个标签都需要加上一个前缀,不如直接写标签名来的爽快。所以xml还给我们提供了一种方式可以声明一个默认的命名空间,具体如下:

<book xmlns="http://www.atguigu.com/xml/b" xmlns:a="http://www.atguigu.com/xml/a">

上边的xmlns="http://www.atguigu.com/xml/b"并没有指定前缀,那么这种没有指定前缀的命名空间就会作为页面中元素的默认命名空间,除非在标签中使用其他命名空间的前缀,否则解析器都会认为元素是在默认命名空间下存在。

但是要注意的是一个文档中只能有一个默认的命名空间,如下的语法是错误的:

<book xmlns="http://www.atguigu.com/xml/b"

xmlns="http://www.atguigu.com/xml/a">

这里我们指定了两个命名空间而都没有使用前缀,解析器在解析文档时会不知道使用哪个命名空间,所以在一个文档中只能有一个默认的命名空间,其他命名空间必须使用前缀。