XML中没有命名空间的元素

时间:2015-04-17 13:22:39

标签: xml

这是一个结构良好的XML,没有默认命名空间。

<?xml version="1.0" encoding="UTF-8"?>
<Zoo xmlns:Staff="URN:STAFF" xmlns:Animal="URN:ANIMAL">
    <Staff:Security name="John" surname="Connor"/>
    <Animal:Dog name="Hachico"/>
    <Visitor name="Arnold" surname="Schwarzenegger"/>
</Zoo>
  1. 在哪个命名空间中有标签Animal:Dog?
  2. 的属性 name
  3. 在哪个命名空间中有元素访客

2 个答案:

答案 0 :(得分:5)

它们根本不在任何名称空间中。

relevant section of the XML Namespaces spec包括以下声明:

  

如果作用域中没有默认名称空间声明,则名称空间名称没有值。

在该规范的术语中,&#34;扩展名称&#34;由一对值组成,&#34;命名空间名称&#34;和#34;本地名称&#34;。因此,您可以将<Animal:Dog />元素表示为{'URN:ANIMAL', 'Dog'},将<Visitor />元素表示为{null, 'Visitor'}

this related question中所述,未加前缀的属性更加好奇,因为即使其中一个属于范围,它们也不会采用默认命名空间:

  

未加前缀的属性名称的命名空间名称始终没有值。

许多人会松散地将该属性解释为与它所在的元素位于同一名称空间中,但从技术上讲,这不是这种情况。 <Animal:Dog name="Hachico" /> <Animal:Dog Animal:name="Hachico" />相同。

答案 1 :(得分:0)

问题1的答案: Animal:在名为"URN:ANIMAL"

的命名空间"Animal"中入场

问题2的答案: 元素"Visitor"不属于任何名称空间。

当元素没有前缀时,它可以是a)属于默认名称空间,也可以完全没有名称空间。 要查看是否存在默认的nameSpace,请在文件顶部查找xmlns="namespace",注意缺少的冒号。