Хорошим и понятным подходом было бы изменить ваш XSLT так, чтобы его вывод не нуждался в каких-либо дополнительных манипуляциях.
Если ваш вызов <xsl:apply-templates>
приводит к строке, которой по какой-то причине необходимо манипулировать, вам сначала нужно захватить ее в переменной:
<xsl:variable name="temp">
<xsl:apply-templates />
</xsl:variable>
<xsl:variable name="temp-manipulated">
<xsl:call-template name="do-some-string-mainpulation">
<xsl:with-param name="string" select="$temp" />
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$temp-manipulated" />
Кроме того, вы можете интегрировать <xsl:apply-templates>
в <xsl:with-param>
, что избавит вас от одного шага:
<xsl:variable name="temp">
<xsl:call-template name="do-some-string-mainpulation">
<xsl:with-param name="string">
<xsl:apply-templates />
</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$temp" />