XML - 为什么相对命名空间被认为是无效的?

XML - Why are relative namespaces considered to be invalid?

我有一块 XML 正在尝试签名然后验证哪个使用相对命名空间:

<Organization>
  <OrganizationName xmlns:_xml="xml" _xml:lang="en">name</OrganizationName>
  <OrganizationDisplayName xmlns:_xml="xml" _xml:lang="en">name</OrganizationDisplayName>
  <OrganizationURL xmlns:_xml="xml" _xml:lang="en">http://www.example.com/</OrganizationURL>
</Organization>

OpenSAML 抛出以下异常:

org.apache.xml.security.c14n.CanonicalizationException: Element OrganizationName has a relative namespace: _xml="xml"

为什么相对名称空间被认为是坏的?解析器在解析真实值时肯定可以只解析命名空间吗?

编辑:找到更多信息

Namespaces in XML 1.1 文档在第 2.2 节中指出:

This deprecation of relative URI references was decided on by a W3C XML Plenary Ballot [Relative URI deprecation]. It also declares that "later specifications such as DOM, XPath, etc. will define no interpretation for them".

这是在 Ballot on relative URI References 上投票的。

当命名空间规范被敲定时,有两种思想流派:一种认为命名空间名称应该只是一个名称(为唯一性而选择的字符串),另一种认为它应该在 Web 上识别一些提供命名空间内容描述的资源:可能是模式,也可能是其他东西。现在,如果它只是一串字符,那么任何字符串都可以。但如果它是资源的位置,那么您会期望根据它出现的元素的基本 URI 解析相对引用。在这一点上,两个思想流派之间没有妥协的余地,而不是决定支持一个或另一个,W3C 决定不应允许相对 URI 作为名称空间名称 - 除非不允许它们为时已晚, 所以它们被弃用了。