0

html tdタグに限られた文字のみを表示しようとしています。以下は私のコードです。「VAR1」の文字数が10文字未満の場合、「...」が直接表示されます。これを確認するにはどうすればよいですか?

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

2 に答える 2

1

10文字だけを表示したいが、元の文字列に10文字を超える場合は...のみを表示したい場合は、1つの式でこれをライブで行うことができます。

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

したがって、VAR1が「123456789」の場合、これだけが出力されます。

123456789

しかし、VAR1が「123456789012」の場合、これを出力します

1234567890...

これがどのように機能するかを説明するために、次の式は、文字列の長さが10を超えるかどうかに応じて、trueまたはfalseのいずれかになります。

(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 に答える