Hallo Günter,
Das eigentlich Problem ergibt sich erst jetzt. Im Zieldokument sollen gleiche nachnamen nur einmal aussgeben werden.
Dazu sind Gruppierungstechniken geeignet, im Folgenden für XSLT 1.0 bzw. 2.0 demonstriert:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="groupby" match="//name" use="nachname"/>
<xsl:template match="root">
<html><head><title>Test</title></head><body>
<xsl:for-each select="//name[generate-id() = generate-id(key('groupby',nachname)[1])]">
<p>
<strong><xsl:value-of select="nachname"/></strong>
<xsl:text>: </xsl:text>
<xsl:for-each select="key('groupby',nachname)">
<xsl:value-of select="vorname"/>
<xsl:if test="position()!=last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each>
</p>
</xsl:for-each>
</body></html>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="root">
<html><head><title>Test</title></head><body>
<xsl:for-each-group select="//name" group-by="nachname">
<p>
<strong><xsl:value-of select="nachname"/></strong>
<xsl:text>: </xsl:text>
<xsl:for-each select="current-group()">
<xsl:value-of select="vorname"/>
<xsl:if test="position()!=last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each>
</p>
</xsl:for-each-group>
</body></html>
</xsl:template>
</xsl:stylesheet>
Grüße,
Thomas