默认声明哪些XML命名空间,不需要/不能声明?
答案 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:lang
,see 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文件时,默认情况下会声明这些命名空间,但这仅仅是约定,不能作为标准行为依赖。