次のように、大きな XML ファイルに制約を適用する必要があります。
<library>
<book>
<bookAuthor ID="1" nameAlias="PeerBR jr"/>
</book>
<book>
<bookAuthor ID="1"/>
</book>
</library>
<authorCatalogue>
<author ID="1" name="PeerBr"/>
</authorCatalogue>
有効な著者を参照するには、各 bookAuthor の ID が必要です。
「制限されたXPath」は非常に扱いにくいと思いますが、何かを見落としている可能性があります。このように制約を定義するのは正しいですか:
<xs:keyref name="bookAuthor" refer="author">
<xs:selector xpath="library/book/bookauthor"/>
<xs:field xpath="@ID"/>
</xs:keyref>
<xs:key name="author">
<xs:selector xpath="authorCatalogue/author"/>
<xs:field xpath="@ID"/>
</xs:key>
それは機能しますが、私のファイルは実際にはよりネストされているため、非常に面倒です。さらに、「library/book/CoAuthor」の新しい制約を作成する必要があります。もっとエレガントにできることはありますか?セレクターを省略できませんか?
制約 ("bookauthor[@nameAlias]") の適用を制限できますか?
よろしくお願いします。