您正在尝试使用datapower中的xsl替换xml中的少数几个字符。我从stackoverflow获得了几个片段,但我猜它不起作用。
<xsl:stylesheet extension-element-prefixes="dp" xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="dp" version="1.0" xmlns:dp="http://www.datapower.com/extensions" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="Output">
<xsl:copy-of select="dp:variable('var://context/INPUT')"/>
</xsl:variable>
<xsl:message dp:priority="debug">*** before replace ***<xsl:copy-of select="$Output"/> ***</xsl:message>
<xsl:if test="contains($Output,'&')">
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="$Output"/>
<xsl:with-param name="replace" select="'&'"/>
<xsl:with-param name="by" select="'%26amp%3B'"/>
</xsl:call-template>
</xsl:if>
<xsl:message dp:priority="debug">*** after and***<xsl:copy-of select="$Output"/> ***</xsl:message>
<xsl:if test="contains($Output,'>')">
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="$Output"/>
<xsl:with-param name="replace" select="'>'"/>
<xsl:with-param name="by" select="'%26gt%3B'"/>
</xsl:call-template>
</xsl:if>
<xsl:message dp:priority="debug">*** IsoClaimsearch after gt***<xsl:copy-of select="$Output"/> ***</xsl:message>
<xsl:if test="contains($Output,'<')">
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="$Output"/>
<xsl:with-param name="replace" select="'<'"/>
<xsl:with-param name="by" select="'%26lt%3B'"/>
</xsl:call-template>
</xsl:if>
<xsl:message dp:priority="debug">*** after lt***<xsl:copy-of select="$Output"/> ***</xsl:message>
<xsl:if test="contains($Output,'"')">
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="$Output"/>
<xsl:with-param name="replace" select="'"'"/>
<xsl:with-param name="by" select="'%26quot%3B'"/>
</xsl:call-template>
</xsl:if>
<xsl:message dp:priority="debug">*** after quot***<xsl:copy-of select="$Output"/> ***</xsl:message>
<xsl:copy-of select="$Output"/>
<xsl:message dp:priority="debug">*** after replace ***<xsl:copy-of select="$Output"/> ***</xsl:message>
</xsl:template>
<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>
我不确定我错过了什么。有人可以帮帮我