xslt替换一个字符串

时间:2014-11-27 16:17:46

标签: xslt replace

使用xslt 1.0我试图替换空格的char“:”,在此之前我需要在第一次出现“:”之前忽略字符。例如:

拥有: 07:090126:00006591 :::

我想得到。

090126 00006591。

我尝试使用这两个模板,但我无法实现它。     

<xsl:param name="requestor"/>
        <xsl:call-template name="string-replace">
            <xsl:with-param name="string" select="substring-after($requestor,':')" />
            <xsl:with-param name="replace" select=':' />
            <xsl:with-param name="with" select=' ' />

        </xsl:call-template>

</xsl:template>






<xsl:template name="string-replace">
<xsl:param name="string" />
<xsl:param name="replace" />
<xsl:param name="with" />

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

有人可以帮忙吗?

此行不起作用:

<xsl:with-param name="replace" select=':' />
<xsl:with-param name="with" select=' ' />

Regards1!

1 个答案:

答案 0 :(得分:0)

您需要在字符串文字周围使用分隔符:

<xsl:call-template name="string-replace">
  <xsl:with-param name="string" select="substring-after($requestor,':')" />
  <xsl:with-param name="replace" select="':'" />
  <xsl:with-param name="with" select="' '" />

</xsl:call-template>