I'm guessing here because you haven't shown us what your xml looks like, but presumably you have defined a key called 'book' which groups all nodes (recepy nodes?) by a common author child node.
So, the construct key('book',author) returns all (recepy?) nodes which have the same author as the current recepy node. Then generate-id does exactly what it says for the first node in that set.
generate-id(nodeX)= generate-id(nodeY) is a generic way of determining if the two nodes nodeX and nodeY are the same node. So you end up with a set containing one recepy node for each unique author node.
There's a very good explanation of this construct and its use in grouping here:
http://www.jenitennison.com/xslt/gro...muenchian.html
hth - post your XML and XSLT if you it still doesn't make sense.
Phil