我有一个事件订阅源的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()]"/>
答案 0 :(得分:0)
使用从外部设置的XSL参数最简单。
<xsl:param name="today" select="'undefined'" />
<!-- time passes... -->
<xsl:apply-templates select="Page[@EventStartDate < $today]"/>
您的日期格式是可以使用字符串比较进行比较,除非涉及不同的时区。你只需设置
20091001T00:00:00
作为$today
的参数值。查看您的XSLT处理器文档以了解具体方法。
另一种方法是使用扩展功能。这取决于您的XSLT处理器支持哪些扩展功能,因此这种方法不可移植。
答案 1 :(得分:0)
为此,我通常在XML中添加一个额外的日期属性,其中包含自1900年以来的日期编号。
例如@ dateid ='9876543'或@ seconds =“9876675446545”
然后我可以轻松地与今天或XSL中的另一个变量进行比较。
您也可以使用此技术比较使用“Unix时间”的时间,例如