限制字符串中的字符数 - XSLT

时间:2011-08-26 17:39:36

标签: asp.net xslt xpath limit character

我正在使用第三方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文件中完成此操作吗?非常感谢,

3 个答案:

答案 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

中删除