XSLT修剪文本长度并显示省略号

史考特

我有一个RSS提要(下面的链接),我想限制标题节点中返回的文本的长度

RSS提要:https : //news.google.co.uk/news?pz=1&cf=all&ned=uk&hl= zh-CN &q=uk&output= rss

所以我为限制添加了一个参数并将其设置为20

然后,我添加了一些测试语句来检查标题节点的长度是否大于/小于20。

我的问题是小于测试总是输出-即使标题大于20!

<xsl:stylesheet version="1.0">
  <xsl:output method="html"/>
  <xsl:template match="/">
    <xsl:param name="allowable-length" select="20"/>
    <ul>
      <xsl:for-each select="rss/channel/item[position() &lt;= 6]">
        <xsl:sort select="pubDate" order="ascending"/>
        <xsl:if test="string-length(rss/channel/item/title) &lt;= $allowable-length">
          <li class="news">
            <a href="{link}" title="{title}">
              <xsl:value-of select="title"/>
            </a>
          </li>
        </xsl:if>
        <xsl:if test="string-length(rss/channel/item/title) &gt; $allowable-length">
          <li class="news">
            <a href="{link}" title="{title}">
              <xsl:value-of select="substring(title, 1, 20)"/>
...            </a>
          </li>
        </xsl:if>
      </xsl:for-each>
    </ul>
  </xsl:template>
</xsl:stylesheet>
JLRishe

无效的主要原因是里面的XPathfor-each是相对的item,但是你的路径开始于rss

您也可以通过消除重复来大大清理XSLT。试试看。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>

  <xsl:param name="allowable-length" select="20"/>

  <xsl:template match="/">
    <ul>
      <xsl:apply-templates select="rss/channel/item[position() &lt;= 6]">
        <xsl:sort select="pubDate" order="ascending"/>
      </xsl:apply-templates>
    </ul>
  </xsl:template>

  <xsl:template match="item">
    <li class="news">
      <a href="{link}" title="{title}">
        <xsl:value-of select="substring(title, 1, $allowable-length)"/>
        <xsl:if test="string-length(title) &gt; $allowable-length">
           <xsl:text>...</xsl:text>
        </xsl:if>
      </a>
    </li>
  </xsl:template>
</xsl:stylesheet>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何用省略号截断长文本,但总是在省略号后显示图标

来自分类Dev

省略号并在单行中显示多行文本

来自分类Dev

文本溢出:省略号显示不同的字符

来自分类Dev

文本溢出:省略号和显示表格单元

来自分类Dev

CSS 文本溢出省略号无法正确显示

来自分类Dev

在右侧显示省略号并将文本向右对齐

来自分类Dev

在iOS 7上使用drawInRect:时,如何修剪文本并添加省略号(...)?

来自分类Dev

文本溢出:省略号不被尊重

来自分类Dev

以“ 100%”宽度div显示省略号

来自分类Dev

使用CSS省略号在悬停上显示截断的文本会覆盖其下方的文本

来自分类Dev

如何在文本区域的文本末尾显示省略号(...)?

来自分类Dev

为长文本添加了省略号,但在文本下方显示

来自分类Dev

使用文本省略号显示 2 个文本同一行

来自分类Dev

显示图像,用省略号修饰一些文本,然后显示图标

来自分类Dev

当文本有省略号时如何显示“显示更多”按钮?

来自分类Dev

如果文本不适合TextBlock,则WPF XAML会显示省略号

来自分类Dev

UITextView-在iOS 6上截断显示省略号的文本(使用自动布局)

来自分类Dev

将省略号应用于文本时,如何显示工具提示?

来自分类Dev

文本溢出省略号未以某些自定义字体显示

来自分类Dev

滚动时文本溢出省略号未在Chrome和IE中显示溢出内容

来自分类Dev

使用jQuery插件在特定点显示文本不省略号

来自分类Dev

TextView文本在左侧被截断,而不是省略了省略号

来自分类Dev

TextView:在省略号后添加文本或更改省略号字符

来自分类Dev

文字溢出:省略号;不截断溢出文本并给出省略号

来自分类Dev

处理省略号

来自分类Dev

结构省略号

来自分类Dev

在SSRS中用省略号截断文本框内容

来自分类Dev

块级元素是否支持文本溢出:省略号

来自分类Dev

Flexbox和文本溢出:省略号混合使用吗?

Related 相关文章

  1. 1

    如何用省略号截断长文本,但总是在省略号后显示图标

  2. 2

    省略号并在单行中显示多行文本

  3. 3

    文本溢出:省略号显示不同的字符

  4. 4

    文本溢出:省略号和显示表格单元

  5. 5

    CSS 文本溢出省略号无法正确显示

  6. 6

    在右侧显示省略号并将文本向右对齐

  7. 7

    在iOS 7上使用drawInRect:时,如何修剪文本并添加省略号(...)?

  8. 8

    文本溢出:省略号不被尊重

  9. 9

    以“ 100%”宽度div显示省略号

  10. 10

    使用CSS省略号在悬停上显示截断的文本会覆盖其下方的文本

  11. 11

    如何在文本区域的文本末尾显示省略号(...)?

  12. 12

    为长文本添加了省略号,但在文本下方显示

  13. 13

    使用文本省略号显示 2 个文本同一行

  14. 14

    显示图像,用省略号修饰一些文本,然后显示图标

  15. 15

    当文本有省略号时如何显示“显示更多”按钮?

  16. 16

    如果文本不适合TextBlock,则WPF XAML会显示省略号

  17. 17

    UITextView-在iOS 6上截断显示省略号的文本(使用自动布局)

  18. 18

    将省略号应用于文本时,如何显示工具提示?

  19. 19

    文本溢出省略号未以某些自定义字体显示

  20. 20

    滚动时文本溢出省略号未在Chrome和IE中显示溢出内容

  21. 21

    使用jQuery插件在特定点显示文本不省略号

  22. 22

    TextView文本在左侧被截断,而不是省略了省略号

  23. 23

    TextView:在省略号后添加文本或更改省略号字符

  24. 24

    文字溢出:省略号;不截断溢出文本并给出省略号

  25. 25

    处理省略号

  26. 26

    结构省略号

  27. 27

    在SSRS中用省略号截断文本框内容

  28. 28

    块级元素是否支持文本溢出:省略号

  29. 29

    Flexbox和文本溢出:省略号混合使用吗?

热门标签

归档