XSLT:使用concat函数

时间:2012-11-05 12:06:44

标签: xslt

我试图在html td标签中只显示有限的字符,以下是我的代码,  如果“VAR1”少于10个字符,它会直接显示“...”,如何检查出来???

<td><xsl:value-of select="concat(substring(VAR1,1,10),'...')"/></td>

2 个答案:

答案 0 :(得分:1)

如果你只想显示10个字符,但只显示...当原始字符串中有超过10个字符时,你可以在单个表达式中实现这一点

<xsl:value-of select="concat(
   substring(VAR1,1,10), 
   substring('...', 1 div (string-length(VAR1) &gt; 10)))"/>

所以,当 VAR1 是'123456789'时,它会输出这个

123456789

但当 VAR1 为'123456789012'时,它会输出此

1234567890...

为了解释这是如何工作的,下面的表达式将为true或false,具体取决于字符串的长度是否大于10

(string-length(VAR1) &gt; 10)

在数值表达式中使用时,true计算结果为1,false计算结果为0.现在,如果字符串的长度超过10个字符,则完整表达式的计算方式如此

substring('...', 1 div (string-length(VAR1) &gt; 10)))
   = substring('...', 1 div true)
   = substring('...', 1 div 1)
   = substring('...', 1)
   = '...'

所以,超过10个字符,最后得到'...'。

但是,当你的字符少于10个时,它会按照这样评估

substring('...', 1 div (string-length(VAR1) &gt; 10)))
   = substring('...', 1 div false)
   = substring('...', 1 div 0)
   = substring('...', (A very big number!))
   = ''

因此,少于10个字符,子字符串不会返回任何内容。

答案 1 :(得分:0)

如果“VAR1”少于10个字符,它应显示“...”?如果这是你的问题,以下是答案

<td>
<xsl:choose>
   <xsl:when test='string-length(VAR1) &gt; 10'>
     <xsl:value-of select=concat(substring(VAR1,1,10),'...')/>
   </xsl:when>
   <xsl:otherwise>
     <xsl:value-of select="VAR1"/>
   </xsl:otherwise>
</xsl:choose>
</td>