xmlns =""究竟意味着什么

Ray*_*ond 5 xml xsd namespaces

给出以下(片段)肥皂呼叫;

<m1:NextCommencementDateInput xmlns:m1="http://foo.bar.com/Types">
    <aDate xmlns="">2010-06-02</aDate>
</m1:NextCommencementDateInput>
Run Code Online (Sandbox Code Playgroud)

显然这与(使用XMLSpy对xsd进行验证时)相同

<m1:NextCommencementDateInput xmlns:m1="http://foo.bar.com/Types">
    <aDate>2010-06-02</aDate>
</m1:NextCommencementDateInput>
Run Code Online (Sandbox Code Playgroud)

那么xmlns =""到底是做什么的呢?

编辑:详细说明为什么我问这是因为我正在呼叫第三方,他们现在说我们应该从我们的请求中删除xmlns ="".然而,我认为他们是一样的,他们应该改变他们的立场.

Tom*_*icz 6

xmlns=""清除默认命名空间的定义(也称为空前缀).在此声明之后,所有没有前缀的元素都被认为具有null命名空间.

所以区别在于:

  • 第一个示例(使用xmlns ="")清除空前缀,因此aDate元素具有null命名空间.

  • 第二个例子不清楚它.aDate元素的命名空间依赖于包含范围的名称空间声明.如果存在活动的xmlns ="some:namespace"声明,则aDate将具有此命名空间.否则它将具有null命名空间.

另外一些XML解析器抱怨xmlns =""如果没有活动的xmlns ="some:namespace"声明要清除...


Don*_*ows 1

根据XML 命名空间规范 (\xc2\xa76.2),除了额外的属性本身(您的实现可能会也可能不会向您隐藏)之外,它们是完全相同的。

\n