【问题标题】:XML - Why are relative namespaces considered to be invalid?XML - 为什么相对名称空间被认为是无效的?
【发布时间】: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 就这样

标签: xml xmlsec


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-15
    • 2023-02-22
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 2010-11-23
    相关资源
    最近更新 更多