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

默认情况下声明哪些XML名称空间?,xml,xml-namespaces,Xml,Xml Namespaces,哪些XML名称空间是默认声明的,不需要/不必声明?简而言之: http://www.w3.org/XML/1998/namespace带有前缀xml http://www.w3.org/2000/xmlns/带前缀xmlns 和仅定义两个名称空间: 名称空间约束:保留前缀和名称空间名称 前缀xml根据定义绑定到名称空间名称 http://www.w3.org/XML/1998/namespace。它可能是,但不一定是 声明,并且不得未声明或绑定到任何其他命名空间 名称其他前缀不能绑定到此命

哪些XML名称空间是默认声明的,不需要/不必声明?

简而言之:

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

和仅定义两个名称空间:

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

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

前缀xmlns仅用于声明命名空间绑定,并且是 按定义绑定到命名空间名称
http://www.w3.org/2000/xmlns/
。不得声明或拒绝 未申报的其他前缀不得绑定到此命名空间名称, 并且不能将其声明为默认名称空间。元素名称 不能有前缀
xmlns

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

  • 除非后续规范另有规定,否则用户不应使用它们
  • 处理器不得将其视为致命错误
所以,只有
http://www.w3.org/XML/1998/namespace
(前缀为
xml
,包含少量属性,如
xml:lang
,)和
http://www.w3.org/2000/xmlns/
(前缀为
xmlns
,用于声明其他名称空间)实际上是在标准中定义的


某些XML处理库可能会提升
http://www.w3.org/2001/XMLSchema
(前缀为
xs
)和
http://www.w3.org/2001/XMLSchema-instance
(前缀为
xsi
)设置为接近默认状态,甚至在编写XML文件时默认为这些名称空间写入
xmlns
声明,但这仅仅是惯例,不能作为标准行为来依赖。

@CharlesDuffy那么,
http://www.w3.org/XML/1998/namespace
,例如?如果你阅读(方便,在同一位置有一个网页),你会注意到它被描述为唯一的。相关:@CharlesDuffy Nope,这不是唯一的一个。:)嗯。我知道这一点(在写我的答案时忘记了这一点),但是你找到的任何一个对我来说都是新闻。对于XML文档中隐式声明的名称空间,答案是正确的。在其他规范中,情况略有不同。例如,在XPath/XSLT/XQuery使用的XDM数据模型中,每个节点都有“xml”作为名称空间绑定,但没有“xmlns”。