是否有 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 节.
在 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 节.