[XSLT]:在XSLT中删除字符串

时间:2012-11-06 06:26:50

标签: string xslt removeclass

我在xsl中有字符串“[test]”。我需要删除xsl中的这个括号。我怎样才能在XSL中实现这一目标。请帮忙。

我知道这可以做到,但我如何删除'['以下代码,

   <xsl:call-template name="string-replace-all">
     <xsl:with-param name="text" select="$string" />
     <xsl:with-param name="replace" select="$replace" />
     <xsl:with-param name="by" select="$by" />
   </xsl:call-template>  

请帮助删除'['和']'

3 个答案:

答案 0 :(得分:6)

使用translate()功能。

示例...

<xsl:call-template name="string-replace-all">
 <xsl:with-param name="text" select="$string" />
 <xsl:value-of select="translate( $text, '[]', '')" />
</xsl:call-template>

答案 1 :(得分:4)

xsl 2.0

replace('[text]','^[(.*)]$','$1')

xsl 1.0

translate('[text]','[]','')

substring-before(substring-after('[text]','['),']')

任何这些都可以根据不同的故障模式做到你想要的。请注意,无论输入是什么,第二个示例都将返回一些内容,但会删除输入中的所有括号。第三个示例只返回一个字符串,如果它有一个初始左括号和一个终端右括号,否则它将返回一个空序列。

答案 2 :(得分:1)

如果要将一个符号替换为另一个符号,可以使用translate函数(XSLT 1.0,2.0),但如果要替换字符串,可以使用MSXML和其他XSLT处理器的通用模板:

<xsl:template name="replace-string">
    <xsl:param name="text"/>
    <xsl:param name="replace"/>
    <xsl:param name="with"/>
    <xsl:choose>
      <xsl:when test="contains($text,$replace)">
        <xsl:value-of select="substring-before($text,$replace)"/>
        <xsl:value-of select="$with"/>
        <xsl:call-template name="replace-string">
          <xsl:with-param name="text" select="substring-after($text,$replace)"/>
          <xsl:with-param name="replace" select="$replace"/>
          <xsl:with-param name="with" select="$with"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$text"/>
      </xsl:otherwise>
    </xsl:choose>
</xsl:template>