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

时间:2017-08-19 08:42:22

标签: xml xmlsec

我有一段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具有相对名称空间:_xml =&#34; xml&#34;

为什么相对名称空间被认为是错误的?当解析真值时,解析器当然可以解析命名空间吗?

编辑:找到更多信息

Namespaces in XML 1.1文件在第2.2节中说明:

  

相对URI引用的弃用由W3C决定   XML Plenary Ballot [相对URI弃用]。它也宣布了这一点   &#34;后来的规范,如DOM,XPath等将定义否   对他们的解释&#34;。

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

1 个答案:

答案 0 :(得分:2)

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