Datetime XSL,比较日期以排除任何过去的事件

Datetime XSL,比较日期以排除任何过去的事件,datetime,rss,xslt,Datetime,Rss,Xslt,我有一个事件提要的RSS。我想隐藏以前的事件 假设XML数据是 <Navigation Name="ItemList" Type="Children"> <Page ID="x32444" URL="..." Title="Class..." EventStartDate="20090831T23:00:00" EventEndDate="20090904T23:00:00" EventStartTime="20090830T15:30:00" EventEndTime="

我有一个事件提要的RSS。我想隐藏以前的事件

假设XML数据是

<Navigation Name="ItemList" Type="Children">
<Page ID="x32444" URL="..." Title="Class..."
EventStartDate="20090831T23:00:00" EventEndDate="20090904T23:00:00"
  EventStartTime="20090830T15:30:00" EventEndTime="20090830T18:30:00" Changed="20090830T20:28:31" CategoryIds="" Schema="Event"
  Name="Class of 2010 BAKE SALE"/>
 <Page ID="x32443" URL="x32443.xml?Preview=true&Site=&UserAgent=&IncludeAllPages=true&tfrm=4" Title="Class of 2010 BAKE SALE"
  Abstract="Treat yourself with our famous 10-star FRIED ICE CREAM!" EventStartDate="20090831T23:00:00" EventEndDate="20090904T23:00:00"
  EventStartTime="20090830T15:30:00" EventEndTime="20090830T18:30:00" Changed="20090830T20:25:35" CategoryIds="" Schema="Event"
  Name="Class of 2010 BAKE SALE"/>
 <Page ID="x32426" URL="x32426.xml?Preview=true&Site=&UserAgent=&IncludeAllPages=true&tfrm=4" Title="Tribute to ..."
  Abstract="Event to recognize and celebrate the lifetime of leadership and service ..."
  EventStartDate="20091206T00:00:00" EventEndDate="20091206T00:00:00" EventStartTime="20090828T23:00:00" EventEndTime="20090828T04:00:00"
  Changed="20090828T22:09:54" CategoryIds="" Schema="Event" Name="Tribute to ...."/>


</Navigation>
我怎么能不包括超过今天日期的内容

<xsl:apply-template select="Page[@EventStartDate=notBeforeToday()]"/>

使用从外部设置的XSL参数最简单

<xsl:param name="today" select="'undefined'" />

<!-- time passes... -->

<xsl:apply-templates select="Page[@EventStartDate &lt; $today]"/>
作为今天$param的值。查看XSLT处理器的文档,了解如何使用它


另一种方法是使用扩展函数。这里它取决于XSLT处理器支持哪些扩展函数,因此这种方法是不可移植的。

为此,我通常在XML中添加一个额外的日期属性,其中包含1900年以来的日期

例如@dateid='9876543'或@seconds=9876675446545

这样我就可以很容易地与today或XSL中的另一个变量进行比较


您还可以使用此技术来比较使用Unix时间的时间,例如

重复的时间以及看起来可能重复的时间,这个问题并不清楚。您是否试图排除过去或将来的日期?
20091001T00:00:00