Возможно, вам следует использовать регулярные выражения, если у вас есть XSLT 2.0 или EXSLT.
Следующий код представляет собой чистое решение XSLT 1.0.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="some-param" select=" 'ololo' "/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="EmailBody">
<xsl:copy>
<xsl:value-of select="substring-before(., '{$Tckt_Cd$}')"/>
<xsl:value-of select="$some-param"/>
<xsl:value-of select="substring-after(., '{$Tckt_Cd$}')"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Используется с правильный ввод XML:
<root>
<EmailBody> <lt;p<gt;Ticket {$Tckt_Cd$}<lt;/p<gt </EmailBody>
</root>
Производит этот результат:
<root>
<EmailBody> <lt;p<gt;Ticket ololo<lt;/p<gt </EmailBody>
</root>
Простой ответ: да. Но ответы могут стать сложными, если параметр содержит значения для более чем одной контрольной метки, и если эталонные метки могут быть более одного раза в текстовом узле. – 2010-12-08 16:01:48