Hallo Janine,
das Problem lässt sich generischer angehen mit einem Identitäts-Template für alles außer den a-Elementen, die separat behandelt werden:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
exclude-result-prefixes="#all" version="2.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="a">
<xsl:variable name="pn" select="fn:local-name(parent::node())"/>
<a href="{@href}_{$pn}.html"><xsl:value-of select="."/></a>
</xsl:template>
</xsl:stylesheet>
Falls das weitere "unbeteiligte" a-Elemente mitnehmen sollte, lassen sich die gesuchten Elemente auch separat ansprechen:
<xsl:template match="a[parent::de]">
<a href="{@href}_de.html"><xsl:value-of select="."/></a>
</xsl:template>
<xsl:template match="a[parent::en]">
<a href="{@href}_en.html"><xsl:value-of select="."/></a>
</xsl:template>
Grüße,
Thomas