我正在编写一个放松 NG 模式来验证一些 XML 文件。对于大多数元素,都有一些必需的属性,并且此 XML 模式的实例还可以添加任何额外的属性。
例如,这是一个有效的文档:
<?xml version="1.0" encoding="utf-8" ?>
<root xmlns:param="some-uri#params">
<someElement
param:requiredAttribute1="foo"
param:requiredAttribute2="bar"
param:freeExtraParam="toto"
param:freeExtraParam="titi" />
</root>
在我的 Relax NG 模式中,我是这样表达的:
<?xml version="1.0" encoding="utf-8" ?>
<grammar
xmlns="http://relaxng.org/ns/structure/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<start>
<element name="someElement" >
<attribute name="requiredAttribute1" />
<attribute name="requiredAttribute2" />
<!-- Any extra param -->
<zeroOrMore>
<attribute>
<nsName ns="some-uri#params" />
</attribute>
</zeroOrMore>
</element>
</start>
</grammar>
但是,当我尝试使用jing验证我的文档时,它抱怨我的架构无效:
error: duplicate attribute "requiredAttribute1" from namespace "some-uri#params"
我猜这是因为requiredAttribute1也符合“任何属性”规则。这样做的正确方法是什么?
在此先感谢,拉斐尔