<xsl:key name="bookByLanguage" match="book[@isenglish="Yes"]" use="id"/>
I suspect you don't want to do that. xsl:key declares an index; the key() function uses the index to do a search. This particular declaration allows you to find an English book quickly if you know its id. But the id appears to be unique across all books, so if you know its id, you can find it without knowing whether or not it is English: using match="book" would give the same result.
I think I need to understand your requirements better.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference