使用 XML 命名空间前缀和指定 xmlns="blah" 作为属性之间的区别

2024-04-11

以下 xml 片段在命名空间方面有何区别(如果有)?

Form1

<prf:XmlElement1 xmlns:prf="namespacename">
   ...snip...
</prf:XmlElement1>

Form2

<XmlElement1 xmlns="namespacename">
   ...snip...
</XmlElement1>

我正在与一个 Web 服务进行交互,当元素的命名空间如 Form2 中描述时,该服务会阻塞,但如果命名空间如 Form1 中描述,则该元素可以正常工作。不幸的是,我无法说服我的 Web 服务框架发出像 Form1 这样的元素;到目前为止我能得到的最好的是Form2。在我看来,两种形式都正确指定了名称空间,这可能是 Web 服务方面的一个错误。


@marc_s 已经在他的评论中解释了有什么区别。

另外@JohnSaunders 可能是正确的,因为服务已损坏。使用默认命名空间破坏文档的一个可能原因是该服务可能依赖于硬编码的命名空间前缀。您可以通过为其提供一个使用相同命名空间但前缀不同的文档来验证这一点prf(或者它总是使用的任何东西)。另请注意如果您没有为前缀声明命名空间,请确保不在任何地方使用该前缀,在元素名称或属性名称中。使用未声明的前缀会使您的文档(命名空间)格式不正确。

如果文档使用 DTD 进行验证,则正常运行的 XML 服务可能依赖于固定的名称空间前缀。与其他模式语言不同,DTD 不支持名称空间,因此处理名称空间声明很困难,因此声明和前缀的位置可能是固定的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 XML 命名空间前缀和指定 xmlns="blah" 作为属性之间的区别 的相关文章

随机推荐