【发布时间】:2017-04-27 13:55:35
【问题描述】:
我有一个 RSS 提要,它来自一个废弃的“今日笑话”博客。由于博客不再更新,我想遍历列表并每天显示不同的项目,最好按时间顺序显示。
如何识别列表中的“第一个”项目(最旧的帖子),然后每天显示下一个项目?
RSS 源在这里:http://feeds.feedburner.com/DailyJokes-ACleanJokeEveryday?format=xml 完整列表在这里:http://dailyjokes.somelifeblog.com/
我的 XSL 代码在这里,当前显示位置 2 的项目,这是最近的帖子:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:apply-templates select="//item[position() < 2]"/>
</xsl:template>
<xsl:template match="item">
<content-item>
<h1><xsl:value-of select="substring-before(title, ' #Joke')"/></h1>
<p><xsl:value-of select="substring-before(description, '<a href')" disable-output-escaping="yes"/></p>
</content-item>
</xsl:template>
</xsl:stylesheet>
我在 SharePoint 2013 RSS webpart 中显示此提要
我的目标是每天显示不同的项目,但我可能会接受简单的随机化。此外,如果有人能推荐一个适合我工作 Intranet 的免费或收费的“今日笑话”网站,我们将不胜感激!
【问题讨论】:
-
XSLT 1.0 没有 current-date() 或 random() 函数,因此这是不可能的,除非您从外部提供这些值之一 - 使用参数或扩展名。我不熟悉 SharePoint,所以我不知道其中哪些是可能的。
-
如果涉及撒克逊人,您可以使用 xmlns:math="java.lang.Math" 和 select="math:random()" 。就像@michael.hor257k 说的那样,不要认为有一个可以使用的内置选项
-
SharePoint 似乎支持
Today函数作为扩展:msdn.microsoft.com/en-us/library/dd583143(office.11).aspx。因此,您可以获取日期,convert it to a serial number 并使用结果模项目数作为要获取的项目的索引。
标签: loops xslt rss sharepoint-2013