XML 属性唯一性

bru*_*iuz 2 xml

xml 文档中每个 XML 元素的属性名称应该是唯一的,不是吗?

<tag is_such_attr_is_valid="value1" is_such_attr_is_valid="value2"> </tag>
Run Code Online (Sandbox Code Playgroud)

ps 我感兴趣的不是如何在验证模式(DTD、XSD)中添加这个约束。但我感兴趣的是,如果严格地说,这种情况会导致格式良好的 xml 文档本身。

har*_*r07 5

是的。一个元素中不能有两个具有相同扩展名称的XML 属性(请参阅参考资料:12)。因此,您发布的 XML 示例显然是不允许的。

即使两个属性被赋予不同的前缀,只要前缀绑定到同一个uri,仍然是不允许的。将<bad>元素与<good>下面示例中的元素进行对比(改编自上面的链接参考并扩展以显示好的替代方案):

<!-- http://www.w3.org is bound to foo and bar -->
<x xmlns:foo="http://www.w3.org" 
   xmlns:bar="http://www.w3.org" >
  <bad a="1"     a="2" />
  <bad foo:a="1" bar:a="2" />
  <good a="1 2"/>
  <good>
     <a>1</a>
     <a>2</a>
  </good>
  <good a="1"    b="2" />
</x>
Run Code Online (Sandbox Code Playgroud)

  • 正确、完整、简洁。可能是属性名称唯一性问题的规范答案! (2认同)