В данном примере вы можете использовать:
<xsl:template match="/root">
<xsl:copy>
<xsl:for-each select="ele">
<name>
<xsl:value-of select="substring(@name, 1, 1)"/>
<xsl:text> </xsl:text>
<xsl:value-of select="substring-after(@name, ' ')"/>
</name>
</xsl:for-each>
</xsl:copy>
</xsl:template>
Однако имена часто не соответствуют одному и тому же шаблону.
В XSLT 2.0 вы можете упростить (?) это с помощью регулярных выражений, например:
<xsl:value-of select="replace(@name, '^(.{1}).* (.*)', '$1 $2')"/>