命名空间是Schema中引入的概念,为了解决DTD无法处理的“命名冲突”问题。为一个元素定义了Namespace则它的所有的子元素都会使用相同的Namespace。
模式文档可以被看做一个类型定义和元素声明的集合(词汇表),他们的名字被归属于一个指定的命名空间,这个命名空间称为目标命名空间。目标命名空间使我们能够从不同的词汇表中区分定义以及声明。
当我们想去检查一个实例文档是否与一个或者多个模式文档相符合(通过一个称为模式校验的处理),我们需要确定在模式定义中声明和定义的哪些元素和属性应该被用来检查在实例文档中的元素和属性。在这个处理流程中,目标命名空间扮演了一个非常重要的角色。
有时可能会有几种可选的方式来影响元素和属性的标识符如何在实例文档中表现。通过使用明确的或者默认的命名空间前缀,作者能够决定在实例文档中出现的局部的声明元素和属性是否必须通过一个命名空间的约束验证。为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。
通过将缺省命名空间设为目标命名空间的好处,其一是在不会引起歧义的情况下可以省略元素所属空间的前缀,可以减少很多不必要的麻烦。此外由于元素可以使用缺省的定义方式,在可能更改目标命名空间时不必大量的修改所有文件代码。