替换XSLT

时间:2017-02-01 12:40:35

标签: xslt xslt-1.0

您好我有以下代码:

 <xsl:if test="@class = 'abc' and name(.) = 'span'">
  <xsl:call-template name="multiReplace">
    <xsl:with-param name="pText" select="."/>
  </xsl:call-template>
</xsl:if>

模板“ multiReplace ”正在查找旧值并替换新值。 我想用NewText文本替换以下范围文本:

 <span class="abc">Old:</span>

 <span class="abc">NewText:</span>

但我得到了:

 <span class="abc">Old:NewText:</span>

下面是其他相关代码:

    <my:params xml:space="preserve">
            <pattern>
                <old>Old: </old>
                <new>NewText:</new>
            </pattern>
            <pattern>
                <old>Contact</old>
                <new>Phone</new>
            </pattern>
    </my:params>

    <xsl:variable name="vPats" select="document('')/*/my:params/*"/>
    <xsl:template name="multiReplace">
        <xsl:param name="pText" select="."/>
        <xsl:param name="pPatterns" select="$vPats"/>
        <xsl:if test="string-length($pText) > 0">
        <xsl:variable name="vPat" select="$vPats[starts-with($pText, old)][1]"/>
        <xsl:choose>
            <xsl:when test="not($vPat)">
            <xsl:copy-of select="substring($pText,1,1)"/>
            </xsl:when>
            <xsl:otherwise>
            <xsl:copy-of select="$vPat/new/node()"/>
            </xsl:otherwise>
        </xsl:choose>
        <xsl:call-template name="multiReplace">
            <xsl:with-param name="pText" select="substring($pText, 1 + not($vPat) + string-length($vPat/old/node()))"/>
        </xsl:call-template>
        </xsl:if>
    </xsl:template>

请你看一下,这里的错误是什么?

0 个答案:

没有答案