输入:
<Remarks>Random data## B2B## abc,controls,free text ## B2B## random data</Remarks>
XSL应该替换
带有的&#34; ## B2B ## abc,控件,自由文本## B2B ##&#34;
Remarks
标记中的
&#34; value1:abc,value2:controls,value3:free text&#34;
期望的输出:
<Remarks>Random data,value1:abc,value2:controls,value3:free text,random data</Remarks>
答案 0 :(得分:0)
以下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>
因此,您可以在调用模板中使用不同的值。