默认情况下声明哪些XML命名空间?

时间:2015-03-24 22:38:43

标签: xml xml-namespaces

默认声明哪些XML命名空间,不需要/不能声明?

1 个答案:

答案 0 :(得分:2)

简而言之:

  • http://www.w3.org/XML/1998/namespace,前缀为xml
  • http://www.w3.org/2000/xmlns/,前缀为xmlns

Namespaces in XML 1.0 (Third Edition)Namespaces in XML 1.1 (Second Edition)都只定义了两个名称空间:

  

命名空间约束:保留的前缀和命名空间名称

     

根据定义,前缀 xml 绑定到命名空间名称   http://www.w3.org/XML/1998/namespace。它可能,但不一定是   声明,并且不得声明或绑定到任何其他命名空间   名称。其他前缀不得绑定到此命名空间名称及其   不得将其声明为默认命名空间。

     

前缀 xmlns 仅用于声明命名空间绑定,而且是   根据定义绑定到命名空间名称   http://www.w3.org/2000/xmlns/绝不能声明或   未申报。其他前缀绝不能绑定到此命名空间名称,   并且它 MUST NOT 被声明为默认命名空间。元素名称    MUST NOT 的前缀为xmlns

     

所有其他前缀以三个字母的序列x,m,l开头,   在任何情况下组合,都保留。这意味着:

     
      
  • 用户不应使用它们,除非后面的规范
  • 定义   
  • 处理器绝不能将它们视为致命错误。
  •   

因此,只有http://www.w3.org/XML/1998/namespace(前缀为xml,包含少数属性,例如xml:langsee full list here)和http://www.w3.org/2000/xmlns/(带前缀{ {1}},用于声明其他命名空间)实际上是在标准中定义的。

某些XML处理库可能会将xmlns(前缀为http://www.w3.org/2001/XMLSchema)和xs(前缀为http://www.w3.org/2001/XMLSchema-instance)提升到接近默认状态,甚至可以写{{1}在编写XML文件时,默认情况下会声明这些命名空间,但这仅仅是约定,不能作为标准行为依赖。