输入:
<Remarks>Random data## B2B## abc,controls,free text ## B2B## random data</Remarks>
XSL应取代
"##B2B##abc,控件,自由文本##B2B##"
在带有的Remarks
标签中
"value1:abc,value2:控件,value3:自由文本"
期望输出:
<Remarks>Random data,value1:abc,value2:controls,value3:free text,random data</Remarks>
以下XSLT执行预期的替换:
<xsl:template match="Remarks">
<Remarks><xsl:value-of select="concat(normalize-space(substring-before(text(),'## B2B## abc,controls,free text ## B2B##')),',value1:abc,value2:controls,value3:free text,',normalize-space(substring-after(text(),'## B2B## abc,controls,free text ## B2B##')))" /></Remarks>
</xsl:template>
输出:
<Remarks>Random data,value1:abc,value2:controls,value3:free text,random data</Remarks>
或者,为了使其更通用,为字符串使用变量:
<xsl:template match="/lines/Remarks">
<xsl:variable name="str2Replace" select="'## B2B## abc,controls,free text ## B2B##'" />
<xsl:variable name="replacement" select="',value1:abc,value2:controls,value3:free text,'" />
<Remarks><xsl:value-of select="concat(normalize-space(substring-before(text(),$str2Replace)),$replacement,normalize-space(substring-after(text(),$str2Replace)))" /></Remarks>
</xsl:template>
更普遍的是:
<xsl:template match="/lines/Remarks">
<xsl:call-template name="strReplace">
<xsl:with-param name="str2Replace" select="'## B2B## abc,controls,free text ## B2B##'" />
<xsl:with-param name="replacement" select="',value1:abc,value2:controls,value3:free text,'" />
<xsl:with-param name="onElement" select="'Remarks'" />
</xsl:call-template>
</xsl:template>
<xsl:template name="strReplace">
<xsl:param name="str2Replace" />
<xsl:param name="replacement" />
<xsl:param name="onElement" />
<xsl:element name="{$onElement}">
<xsl:value-of select="concat(normalize-space(substring-before(text(),$str2Replace)),$replacement,normalize-space(substring-after(text(),$str2Replace)))" />
</xsl:element>
</xsl:template>
因此,您可以在调用模板中使用不同的值。