Hallo Thomas,
du hast Recht, da habe ich den Wald vor lauter Bäumen übersehen. Meine ursprüngliche Datei ist wesentlich komplexer. Danke für den Hinweis. Da hat in der xsl:for-each nur ein name-Element gefehlt:
<xsl:for-each select="//role[not(name/text()=preceding-sibling::role/name/text())]">
LG JanineS