アプリケーションですでに使用されているxml形式を検証するためのスキーマを設計しようとしています(xmlを再設計する余地はあまりありません)。
xmlスキーマディクショナリのkey要素とkeyref要素を利用して、IDの制約を検証しようとしています。
1つの特定の問題は、xmlが1対多の関係をモデル化する方法にあります
<spaceships>
<spaceship guns="gun1 gun2 gun3"/>
</spaceships>
<guns>
<gun id="gun1"/>
<gun id="gun2"/>
<gun id="gun3"/>
</guns>
スキーマでこのキー/キー参照のペアを思いついた
<xs:key name="gunKey">
<xs:selector xpath="guns/gun" />
<xs:field xpath="@id" />
</xs:key>
<xs:keyref name="gunRef" refer="gunKey">
<xs:selector xpath="spaceships/spaceship" />
<xs:field xpath="@guns" />
</xs:keyref>
これは、xercesの抗議では検証されません。
要素のID制約に対して、値が「gun1gun2gun3」のキー「gunRef」が見つかりません。
リストの値が別のエンティティへの参照のコンマ区切りリストであり、それでもID制約検証の利点を享受できることをスキーマで表現する方法はありますか?