XSLT многократная замена

У меня есть документ XML, что-то вроде

<root>
  <item>_x0034_SOME TEXT</item>
  <item>SOME_x0020_TEXT</item>
  <item>SOME_x0020_TEXT_x0032_</item>
</root>

Я экспортирую его в HTML, но у меня проблемы с заменой escape-символов. Я нашел несколько шаблонов в сети для замены текста, но все они похожи на это:

<xsl:template name="replaceString">
    <xsl:param name="strOrig"/>
    <xsl:param name="strSearch"/>
    <xsl:param name="strReplace"/>
    <xsl:choose>
        <xsl:when test="contains($strOrig, $strSearch)">
            <xsl:value-of select="substring-before($strOrig, $strSearch)"/>
            <xsl:value-of select="$strReplace"/>
            <xsl:call-template name="replaceString">
                <xsl:with-param name="strOrig" select="substring-after($strOrig, $strSearch)"/>
                <xsl:with-param name="strSearch" select="$strSearch"/>
                <xsl:with-param name="strReplace" select="$strReplace"/>
            </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="$strOrig"/>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

Я не уверен, как я могу использовать это, чтобы сделать несколько замен. Я попробовал это:

<xsl:for-each select="PinnacleSys.PMC.Plugins.PVR.PvrChannelDescriptorWrapper/PinnacleSys.PMC.Plugins.PVR.DVBTPvrChannelDescriptor">

    <!--name="<xsl:value-of select="replace(replace(Name, '_x0020_', ' '), '_x0034_', '3')"/>" -->
    <!--name="<xsl:value-of select="Name"/>"-->
    <xsl:variable name="var1" select="Text" />
        <xsl:value-of select="replace($FeatureInfo,'Feature=','TESTING')"/>

    name="
        <xsl:call-template name="replaceString">
            <xsl:with-param name="strOrig" select="Name"/>
            <xsl:with-param name="strSearch" select="'_x0020_'"/>
            <xsl:with-param name="strReplace" select="' '"/>
        </xsl:call-template>
        <xsl:call-template name="replaceString">
            <xsl:with-param name="strOrig" select="Name"/>
            <xsl:with-param name="strSearch" select="'_x0030_'"/>
            <xsl:with-param name="strReplace" select="'0'"/>
        </xsl:call-template>
       ..."

Но это просто объединяет строку несколько раз, каждый со своей заменой. Я также исследовал переменные; если бы я мог присвоить результат вызова шаблона переменной, я мог бы получить грязное, но работающее решение, которого мне достаточно. Однако я не смог и не знаю, возможно ли это.

Какой лучший способ сделать это?

Я ограничен 1.0 XSLT (с 2.0 я мог бы вызвать один replace () внутри другого).

Ответы на вопрос(4)

Ваш ответ на вопрос