您好我有以下代码:
<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>
请你看一下,这里的错误是什么?