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文字を超える場合は...のみを表示したい場合は、1つの式でこれをライブで行うことができます。
<xsl:value-of select="concat(
substring(VAR1,1,10),
substring('...', 1 div (string-length(VAR1) > 10)))"/>
したがって、VAR1が「123456789」の場合、これだけが出力されます。
123456789
しかし、VAR1が「123456789012」の場合、これを出力します
1234567890...
これがどのように機能するかを説明するために、次の式は、文字列の長さが10を超えるかどうかに応じて、trueまたはfalseのいずれかになります。
(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>