0

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

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

2 回答 2

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...

为了解释它是如何工作的,下面的表达式将是真或假,这取决于字符串的长度是否大于 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 个字符的子字符串不会返回任何内容。

于 2012-11-05T13:21:28.403 回答
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>
于 2012-11-05T12:23:30.583 回答