>What i want to do is if there is a removed element as a child in book none of the other child elements should be in the output.
That sounds like
<xsl:choose>
<xsl:when test="$nodes[self::removed]">
... there is a "removed" element. Process it... (or do nothing?)
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="$nodes">
.. there is no "removed" element, so process all the nodes ...
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
I don't see where you got the idea of using the descendant axis: you seem to have some misunderstanding of basic concepts, and spending some time with a good book or tutorial would probably help.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference