我试图在 html td 标签中只显示有限的字符,以下是我的代码,如果“VAR1”的字符少于 10 个,它直接显示“...”,如何检查?
<td><xsl:value-of select="concat(substring(VAR1,1,10),'...')"/></td>
我试图在 html td 标签中只显示有限的字符,以下是我的代码,如果“VAR1”的字符少于 10 个,它直接显示“...”,如何检查?
<td><xsl:value-of select="concat(substring(VAR1,1,10),'...')"/></td>
如果您只想显示 10 个字符,但只显示 ... 当原始字符串中有超过 10 个字符时,您可以在一个表达式中执行此操作,所以
<xsl:value-of select="concat(
substring(VAR1,1,10),
substring('...', 1 div (string-length(VAR1) > 10)))"/>
所以,当VAR1是 '123456789' 时,它会输出这个
123456789
但是当VAR1是 '123456789012' 它会输出这个
1234567890...
为了解释它是如何工作的,下面的表达式将是真或假,这取决于字符串的长度是否大于 10
(string-length(VAR1) > 10)
在数值表达式中使用时,true 的计算结果为 1,false 的计算结果为 0。现在,如果字符串长度超过 10 个字符,则完整表达式的计算方式如下
substring('...', 1 div (string-length(VAR1) > 10)))
= substring('...', 1 div true)
= substring('...', 1 div 1)
= substring('...', 1)
= '...'
因此,如果字符数超过 10 个,最后会出现“...”。
但是,当您的字符数少于 10 个时,它的评估结果如下
substring('...', 1 div (string-length(VAR1) > 10)))
= substring('...', 1 div false)
= substring('...', 1 div 0)
= substring('...', (A very big number!))
= ''
因此,少于 10 个字符的子字符串不会返回任何内容。
如果 "VAR1" 少于 10 个字符,它应该显示 '...' ?如果这是您的问题,以下是答案
<td>
<xsl:choose>
<xsl:when test='string-length(VAR1) > 10'>
<xsl:value-of select=concat(substring(VAR1,1,10),'...')/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="VAR1"/>
</xsl:otherwise>
</xsl:choose>
</td>