我在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>
请帮助删除'['和']'
答案 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>