命名空间声明有范围。 这意味着命名空间可以出现在文档中的任何位置,但像编程变量一样有作用范围,命名空间只在相应的范围内有效。 有两种范围:默认范围和限定范围。
默认命名空间是在根元素中声明的命名空间。 它应用于文档中所有未限定的元素。 限定命名空间是在一个更具体的命名空间在文档中某一位置重写时声明的。
尽管命名空间必须声明后才能使用,但这并不意味着它必须出现在 XML 文档的开头。 例如,下面的示例显示一个在数据中间声明的限定命名空间,它是在 BOOK 元素级别声明的,该命名空间只应用于它的子代。
<Author>Joe Smith</Author>
<BOOK xmlns:book="https://www.contoso.com">
<title>My Wonderful Day</title>
<price>$3.95</price>
</BOOK>
<Publisher>
<Name>MSPress</Name>
</Publisher>
在 BOOK 元素定义的命名空间不应用于 BOOK 元素以外的元素,如 Publisher 元素。 当命名空间在文档中出现时,意味着所声明的命名空间从它的声明位置直到元素的结尾(命名空间的声明范围)都有效。
如果已为 Publisher 元素声明了命名空间,则需要通过一个冒号将该命名空间添加到元素之前,以完全限定元素。 假定 Publisher 元素属于 mybook 命名空间,则该元素将声明为 <mybook:Publisher>。