【问题标题】:Are there XML namespaces whose mere mentioning has side-effects? E.g. in SOAP 1.1?是否存在仅仅提及就会产生副作用的 XML 命名空间?例如。在 SOAP 1.1 中?
【发布时间】:2015-08-10 09:34:55
【问题描述】:

在 XML 文档中包含(声明)像“http://www.w3.org/2001/XMLSchema-instance”这样的命名空间是否会产生副作用或改变其解释,即使声明的命名空间前缀没有在任何地方使用?

我在网上看到很多例子——包括各种官方规范——以及客户端传输的数据,其中一些看似多余的命名空间声明比比皆是,好像是为了抵御邪恶。它们在实际传输数据中的出现可能归因于粗心/草率的编码,但对于已发布规范中的示例而言,情况并非如此。

一个有点综合的例子,简化为最基本的:

<?xml version="1.0"?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <Body>
      <example xmlns="acme-URI">
         <foo xmlns="">meow<foo>
      </example>
   </Body>
</Envelope>

如果重要的话,我最关心的是 SOAP 1.1 消息。

【问题讨论】:

    标签: xml soap xml-parsing xml-namespaces


    【解决方案1】:

    这取决于处理 XML 的应用程序。这不是常见的或推荐的做法,但如果声明了特定的命名空间,即使它没有被使用,接收应用程序理论上也可以做一些不同的事情。

    更常见的是,由于生成 XML 的程序员的粗心,或者因为当您打开新文档时 XML 编辑器默认包含某些命名空间。

    我只遇到过一个 XML 词汇表,它要求在元素上声明命名空间,即使它们没有用于元素或属性名称:请参阅http://unicode.org/reports/tr35/ 的第 5.1.1 节。

    【讨论】:

    • 谢谢,我也很怀疑。我在这里的目的是更深入地了解标准,以便我可以将奇怪但标准的要求与特定应用程序或框架的特殊要求区分开来(将以不同的方式处理,无论如何这对于处理我们的一些客户软件生成的无效 XML)。也感谢您指出一个标准本身非常独特的例子......
    猜你喜欢
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    相关资源
    最近更新 更多