是否有 XML 个名称空间,只要一提就有副作用?例如。在 SOAP 1.1 中?

Are there XML namespaces whose mere mentioning has side-effects? E.g. in SOAP 1.1?

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

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

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

<?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 的应用程序。这不是常见的或不推荐的做法,但理论上,如果声明了特定的命名空间,接收应用程序可以执行不同的操作,即使它未被使用。

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

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