【发布时间】:2017-08-19 22:53:59
【问题描述】:
我有一段 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"
为什么相对命名空间被认为是不好的?解析器在解析真值时肯定可以解析命名空间吗?
编辑:找到更多信息
Namespaces in XML 1.1 文档在第 2.2 节下声明:
这种相对 URI 引用的弃用是由 W3C 决定的 XML Plenary Ballot [Relative URI deprecation]。它还声明, “以后的规范如 DOM、XPath 等将定义没有 为他们解释”。
这是在Ballot on relative URI References 上投票选出的。
【问题讨论】:
-
这里不使用绝对命名空间 URI 的原因是什么?
-
crewjam/saml 项目 marshalled 就这样