Recursive nodes are generally handled using xsl:apply-templates.
But I don't think that's your problem here.
Your problem is seriously underspecified: it's impossible to tell from this example what the set of possible inputs is, and how inputs different from the one shown would be transformed.
In your example, a client either has children or has following siblings, it never has both. Will that always be the case?
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference