小编Joh*_*ohn的帖子

XSL多重搜索和替换功能

我试图使用XSL translate()函数创建类似搜索和替换函数的内容,如下所示:

<xsl:template name="create-id">
    <xsl:param name="id" />
    <xsl:call-template name="search-and-replace">
        <xsl:with-param name="str" select="$id" />
        <xsl:with-param name="search">0123456789</xsl:with-param>
        <xsl:with-param name="replace">abcdefghij</xsl:with-param>
    </xsl:call-template>
</xsl:template>

<xsl:template name="search-and-replace">
    <xsl:param name="str" />
    <xsl:param name="search" />
    <xsl:param name="replace" />
    <xsl:variable name="newstr" select="translate($str, $search,
    $replace)" />
    <xsl:choose>
        <xsl:when test="contains($newstr, $search)">
            <xsl:call-template name="search-and-replace">
                <xsl:with-param name="str" select="$newstr" />
                <xsl:with-param name="search" select="$search" />
                <xsl:with-param name="replace" select="$replace" />
            </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="$newstr" />
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

但是,关于我的逻辑的一些内容在这里是错误的,因为它似乎剥离了返回字符串中的最后一个字符.我的猜测是translate()只替换字符串中每个字符的第一个实例,并不是真正的递归.

任何想法或意见将不胜感激.

xslt search replace translate

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

replace ×1

search ×1

translate ×1

xslt ×1