我在使用XSL 1.0替换字符串中的字符串时遇到了一些问题。我已经在这个网站和其他网站上阅读过各种各样的主题,但是我无法理解为什么我的方法不起作用。出于这个问题的目的,我已经把数据贬低了一点但是你会得到清单,希望如此。
这是我的XML文件
<StatementReportOnlActivityByGame>
<GameName>TESTMATCH5</GameName>
<StatementReportOnlActivityByGameDetail>
<DetailDesc>1ASALES TESTMATCH5</DetailDesc>
<GrossAmount>18.000</GrossAmount>
</StatementReportOnlActivityByGameDetail>
<StatementReportOnlActivityByGameDetail>
<DetailDesc>3AVALIDS TESTMATCH5</DetailDesc>
<GrossAmount>10.000</GrossAmount>
</StatementReportOnlActivityByGameDetail>
<StatementReportOnlActivityByGameDetail>
<DetailDesc>4ACOMMISSIONS TESTMATCH5</DetailDesc>
<GrossAmount>0.000</GrossAmount>
</StatementReportOnlActivityByGameDetail>
</StatementReportOnlActivityByGame>
要求:在输出中,我需要将TESTMATCH5
替换为TESTMATCH F5
XSL文件是
<xsl:template name="string-replace-all">
<xsl:param name="text" />
<xsl:param name="replace" />
<xsl:param name="by" />
<xsl:choose>
<xsl:when test="contains($text, $replace)">
<xsl:value-of select="substring-before($text,$replace)" />
<xsl:value-of select="$by" />
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="substring-after($text,$replace)" />
<xsl:with-param name="replace" select="$replace" />
<xsl:with-param name="by" select="$by" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
调用模板
<xsl:cal-template name="string-replace-all">
<xsl:with-param name="text" select="lsp:DetailDesc" />
<xsl:with-param name="replace" select="TESTMATCH5" />
<xsl:with-param name="by" select="'TESTMATCH F5'" />
</xsl:cal-template>