Na ja, der Anker auf der Seite setzt sich doch zusammen aus dem Vornamen, dem Namen und der Position, also bspw.
Durch die Sortierung
Code:
<xsl:if test="count(child::Kontakt)>0">
[b]Direktwahl[/b]:
<xsl:for-each select="Kontakt">
<xsl:sort select="concat(Name, Vorname)"/>
<a href="#{Vorname}_{Name}:{position()}">
<xsl:value-of select="Name"/> <xsl:value-of select="Vorname"/> <xsl:value-of select="Firma"/>
</a>
</xsl:for-each>
</p><hr size="1"/>
</xsl:if>
ändert sich aber die Reihenfolge der Knoten und damit natürlich auch deren Position. Du musst also beim Aufruf des Templates "Kontakt" auch noch mal für die gleiche Sortierung sorgen
Code:
<xsl:apply-templates select="Kontakt">
<xsl:sort select="concat(Name, Vorname)"/>
</xsl:apply-templates>