Xml属性唯一性

时间:2016-02-20 09:00:00

标签: xml

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

<tag is_such_attr_is_valid="value1" is_such_attr_is_valid="value2"> </tag>

P.S。我很感兴趣,不知道如何在验证模式(DTD,XSD)中添加此约束。但我感兴趣的是,如果严格说话,这种情况会导致形成良好的xml文档。

1 个答案:

答案 0 :(得分:3)

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

即使这两个属性被赋予不同的前缀,只要前缀绑定到同一个uri,它仍然是不允许的。将<bad>元素与下面示例中的<good>元素进行对比(从上面的链接引用改编并扩展为show good alternatives):

<!-- 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>