xmlns =""是一个有效的xml命名空间吗?

Ser*_*jev 25 xml xml-namespaces

"空"是XML命名空间的有效值吗?如果是的话是什么意思?

我有以下XML代码,但我不确定属于哪个命名空间Field1Field2元素.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header />
  <soap:Body>
    <Root xmlns="uri">
      <Field1 xmlns="">147079737</Field1>
      <Field2 xmlns="">POL</Field2>
    </Root>
  </soap:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

Fre*_*abe 24

是的,它是有效的.第6.2节的XML 1.0推荐命名空间具体说:

默认名称空间声明中的属性值可以为空.在声明的范围内,这与没有默认命名空间具有相同的效果.

引自评论:

它是合法的,这是将元素引入全局命名空间的方法.


Lud*_*uty 5

这不是有效的XML NS。这不是有效的XML NS声明。请检查XML 1.0中命名空间的2.2节

空字符串尽管是合法的URI引用,但不能用作名称空间名称。

但是,这是取消声明默认NS声明的唯一方法(如果有的话),或者没有效果。看到。XML 1.0和1.1的6.2节中的命名空间。但是1.1 NS rec增加了一种方法也可以取消声明带有前缀的NS声明。

因此它是有效的,但不是OP所写的“有效XML名称空间”。

  • @lkuty我认为您正在回答以下问题:空字符串是否是有效的名称空间名称。但是,OP似乎在询问空字符串是否是xmlns属性的有效值。也许这种脱节是为什么有两个矛盾的答案的原因。 (5认同)
  • 似乎您将名称空间前缀与实际名称空间(名称空间URI)混淆了。空字符串不是有效的名称空间前缀,而是有效的名称空间URI。 (3认同)
  • 我不认为我在混淆任何东西。我知道区别。顺便说一句,我看不出我的答案在哪里暗示了这一点。 (2认同)