Нет, к сожалению, вы не можете этого сделать. Нет никакого способа ограничить перечисление таким образом, и у вас также будут проблемы с расширением и ограничением сложного типа одновременно. Есть хорошая статья, что вы можете сделать с перечислениями здесь .
Возможно, вместо этого рассмотрите возможность работы снизу вверх: определите базовый тип книги, в котором почти ничего нет; затем определите LyricType, который является объединением базового типа и еще нескольких значений; нести bookCode в подтипах. Это не идеально, но, увы, XSD не всегда совпадает с объектно-ориентированными языками.