+ -
当前位置:首页 → 问答吧 → xsl的translate函数使用

xsl的translate函数使用

时间:2011-08-16

来源:互联网

我想使用translate函数替换xml中的单引号(即进行转移处理),但不知道怎么写,我写成这样,总是报错,<xsl:value-of select="translate(.,'\'','\\'')"/>,经验证,前面那个.是没有问题的,就是不知道后面的参数如何写,请高手帮忙,谢谢。

作者: smallbird105   发布时间: 2011-08-16

translate只能替换相同数量的字符,实现Repalce,你需要使用模板。

XML code
  <xsl:template name="globalReplace">
    <xsl:param name="outputString"/>
    <xsl:param name="target"/>
    <xsl:param name="replacement"/>
    <xsl:choose>
      <xsl:when test="contains($outputString,$target)">
        <xsl:value-of select="concat(substring-before($outputString,$target),$replacement)"/>
        <xsl:call-template name="globalReplace">
          <xsl:with-param name="outputString" select="substring-after($outputString,$target)"/>
          <xsl:with-param name="target" select="$target"/>
          <xsl:with-param name="replacement" select="$replacement"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$outputString"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>


调用方法
XML code
<xsl:call-template name="globalReplace">
  <xsl:with-param name="outputString" select="."/>
  <xsl:with-param name="target" select="'\'"/>
  <xsl:with-param name="replacement" select="'\\'"/>
</xsl:call-template>

作者: net_lover   发布时间: 2011-08-16