Мне нужно применить ограничения в большом XML-файле, например:
<library>
<book>
<bookAuthor ID="1" nameAlias="PeerBR jr"/>
</book>
<book>
<bookAuthor ID="1"/>
</book>
</library>
<authorCatalogue>
<author ID="1" name="PeerBr"/>
</authorCatalogue>
Мне нужен идентификатор каждого автора книги для ссылки на действительного автора.
Я нахожу «ограниченным»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>
Это работает, но мой файл на самом деле более вложенный, поэтому он становится действительно грязным.Кроме того, я должен написать новое ограничение для "библиотеки / книги / CoAuthor".Неужели нет ничего более элегантного, что я могу сделать?Не могу ли я сократить селектор?
Могу ли я ограничить применение ограничения ("bookauthor [@nameAlias]")?
Заранее благодарен за помощь.