我正在使用第三方asp.net控件来从数据库中提取和显示最新内容。该控件使用xsl文件提取最新发布内容的标题。我的问题是标题(内容片段)太长。我以前用过的地方显示没有大约100个字符的空间。我需要修剪(不是白色空格)结束部分,并可能将其限制为几个单词或一些字符。它使用xsl文件 -
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<xsl:for-each select="Collection/Content">
<tr>
<td>
<a>
<xsl:attribute name="href">
<xsl:choose>
<xsl:when test="Type ='Assets' or Type = 8 ">
javascript:void window.open('showcontent.aspx?id=<xsl:value-of select="ID"/>')
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="QuickLink"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:value-of select="Title"/>
</a>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
这部分,<xsl:value-of select="Title"/>
是你的标题所在,我需要缩短它...(也许......最后......)
我该怎么办?我可以在不使用JQuery的情况下在xsl文件中完成此操作吗?非常感谢,
答案 0 :(得分:7)
<xsl:choose>
<xsl:when test="string-length(Title) > 100">
<xsl:value-of select="substring(Title, 1, 97)" />...
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="Title" />
</xsl:otherwise>
</xsl:choose>
答案 1 :(得分:4)
您可以使用substring(text, startingIndex, length)
XSLT函数:
<xsl:value-of select="substring(Title, 1, 100)"/>
请注意,substring index从1开始,而不是通常的0。
更多http://zvon.org/xxl/XSLTreference/Output/xpathFunctionIndex.html
另请注意,.NET不实现XSLT 2.0,只实现XSLT 1.0(因此上面的引用:它是XSLT 1.0函数的列表)。
答案 2 :(得分:1)
限制20个字符
如果你的代码喜欢这个
<xsl:value-of select="EmpBio" disable-output-escaping="yes"/>
只需更改下面的新内容
<xsl:value-of select="substring(BioData, 1, 20)" disable-output-escaping="yes"/>
请注意,引号将从元素名称BioData
中删除