Ce que vous avez décrit ici est un problème de regroupement. La méthode standard pour gérer le regroupement dans xslt 1 est la méthode "Muenchian". Il y a une explication très détaillée à ce sujet ici: http://www.jenitennison.com/xslt/grouping/muenchian.html
L'idée de base est que vous créez une clé qui spécifie ce que vous voulez regrouper. Dans ce cas, vous devez créer une clé correspondant au noeud de la personne, en utilisant la première lettre de son nom.
Ensuite, vous écrivez une boucle qui boucle les gens, et vérifie si chacun est le premier à correspondre à cette clé donnée (première lettre). Si c'est le cas, alors vous mettez dans l'un de vos diviseurs de groupe.
Ensuite, vous avez une boucle imbriquée (ou apply-templates) qui a une règle de correspondance qui ne prend que les nœuds avec cette première lettre. Vous pouvez les trier en utilisant xslt: sort, et les sortir.
Si vous pouvez publier un échantillon de votre XML actuel (plutôt que simplement votre sortie désirée), alors je peux vous écrire un exemple de feuille de style pour l'analyser.