XML命名空间详解

使用前缀

解决这个问题最好的方法就是为不同的元素起不同的名字。比如:这里我们可以定一个规则,每一个book下的元素使用一个前缀,而author下的使用另一个前缀,这样我们可以通过不同的前缀来区分不同的标签,如此一来我们的文档会变成这个样子:

<b:book>

<b:title>西游记</b:title>

<a:author>

<a:name>吴承恩</a:name>

<a:title>先生</a:title>

</a:author>

</b:book>

这种方式看起来比较难看,但是确实可以达到区分的目的,现在b:title和a:title就是两个不同的标签。

通过前缀名我们可以很方便的将文档中的标签分成两类a和b,带有前缀a的属于a类型,带有前缀b的属于b类型,这个类就是命名空间,这里你看起来是不是和Java中的包名有着异曲同工的效果呢?

但是这里还存在一个小问题,这里的命名空间还只是通过名字来区分不同的标签,也就是说命名空间只是为名字进行了一个分类但是名字具体代表了什么意义,它们应该在哪里出现,它并没有一个说明和约束。