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 文档本身。
是的。一个元素中不能有两个具有相同扩展名称的XML 属性(请参阅参考资料:1、2)。因此,您发布的 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)