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 作为名称空间名称 - 除非不允许它们为时已晚, 所以它们被弃用了。
我有一块 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 作为名称空间名称 - 除非不允许它们为时已晚, 所以它们被弃用了。