XML中没有名称空间的元素

问题描述:

这是没有默认名称空间的格式良好的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. 在其命名空间中有属性名称标签动物:狗?
  2. 哪里有名称空间有元素访客

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

relevant section of the XML Namespaces spec包括以下语句:

如果范围没有默认命名空间声明,名称空间的名称没有价值。

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

前缀的属性是多了几分好奇,在this related question讨论,因为他们没有在默认的命名空间采取即使是一个范围:

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

许多人将该属性松散地解释为与它所在的元素位于相同的命名空间中,但这在技术上并非如此。 <Animal:Dog name="Hachico" />不是<Animal:Dog Animal:name="Hachico" />相同。