いくつかのXMLファイルを検証するためにrelaxNGスキーマを作成しています。ほとんどの要素には、いくつかの必須属性があり、この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>
私のRelaxNGスキーマでは、次のように表現しています。
<?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も「任意の属性」ルールに一致するためだと思います。これを行うための正しい方法は何ですか?
よろしくお願いします、ラファエル