Я пытаюсь изменить строки вроде:
Some {words} should be {bold} ...
на что-то вроде
Some <b>words</b> should be <b>bold</b> ...
Однако моя реализация забывает все <b>
элементы, кроме последнего:
Some words should be <b>bold</b> ...
Я думаю, что substring-before () удаляет уже вставленные <b>
элементы.
Вот мой код:
<xsl:template name="replace">
<xsl:param name="input"/>
<xsl:variable name="before" select="substring-before( $input, '{' )" />
<xsl:variable name="after" select="substring-after( $input, '}' )" />
<xsl:variable name="replace" select="substring-after( substring-before( $input, '}' ), '${' )" />
<xsl:choose>
<xsl:when test="$replace">
<xsl:call-template name="replace">
<xsl:with-param name="input">
<xsl:value-of select="$before" />
<xsl:element name="b">
<xsl:value-of select="$replace" />
</xsl:element>
<xsl:value-of select="$after" />
</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$input" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Есть идеи?Спасибо за вашу помощь.