给出以下(部分)肥皂调用;

<m1:NextCommencementDateInput xmlns:m1="http://foo.bar.com/Types">
    <aDate xmlns="">2010-06-02</aDate>
</m1:NextCommencementDateInput>

显然,这与(使用XMLSpy针对xsd进行验证时)相同
<m1:NextCommencementDateInput xmlns:m1="http://foo.bar.com/Types">
    <aDate>2010-06-02</aDate>
</m1:NextCommencementDateInput>

那么xmlns =“”到底能做什么?

编辑:详细说明为什么我要问这是因为我正在调用第三方,他们现在说我们应该从请求中删除xmlns =“”。但是我认为它们是相同的,应该改变立场。

最佳答案

xmlns=""清除默认 namespace (也称为空前缀)的定义。在此声明之后,所有不带前缀的元素都被认为具有空 namespace 。

所以区别是:

  • 第一个示例(带有xmlns =“”)清除空前缀,因此aDate元素具有空 namespace 。
  • 第二个示例没有清除它。 aDate元素的命名空间取决于包含范围中的命名空间声明。如果存在事件的xmlns =“some:namespace”声明,则aDate将具有此命名空间。否则它将具有空 namespace 。

  • 另外,如果没有事件的xmlns =“some:namespace”声明需要清除,则一些XML解析器会提示xmlns =“”。

    关于xml - xmlns =""到底是什么意思,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3184429/

    10-13 01:12