1

我有一段 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:元素 OrganizationName 有一个相对命名空间:_xml="xml"

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

编辑:找到更多信息

XML 1.1文档中的命名空间在第 2.2 节中指出:

弃用相对 URI 引用是由 W3C XML Plenary Ballot [Relative URI deprecation] 决定的。它还声明“以后的规范,如 DOM、XPath 等,将不会为它们定义任何解释”。

这是在相对 URI References 的投票中投票赞成的。

4

1 回答 1

3

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

于 2017-08-19T14:53:59.413 回答