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