2009-08-31 4 views
0

J'ai un RSS d'un flux d'événements. Je voudrais cacher les événements précédents.XSL, comparer des dates pour exclure des événements passés

En supposant sous-ensemble de données XML de

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

Comment puis-je inclure rien passé la date d'aujourd'hui

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

en double de http://stackoverflow.com/questions/1372550/exclude-items-who-has-a-later-date -than-the-date-of-today/ – Thiyagaraj

+0

En plus de sembler être un doublon potentiel, cette question n'est pas claire. Essayez-vous d'exclure les dates * passées * ou * futures *? –

Répondre

0

avec des paramètres de Easiest XSL que vous avez définis de l'extérieur. Votre format de date est tel que vous pouvez le comparer à l'aide de la comparaison de chaînes, sauf si différents fuseaux horaires sont impliqués. Vous définissez simplement

20091001T00:00:00 

la valeur PARAM pour $today. Jetez un oeil dans la documentation de votre processeur XSLT pour voir comment.

L'alternative serait d'utiliser une fonction d'extension. Ici, cela dépend des fonctions d'extension supportées par votre processeur XSLT, donc cette approche ne sera pas portable.

0

A cet effet, je l'habitude d'ajouter un attribut de date supplémentaire dans le fichier XML qui contient le nombre de jours depuis l'année 1900.

par exemple @ DateId = '9876543' ou @ secondes = "9876675446545"

alors je peux facilement comparer avec aujourd'hui ou une autre variable dans le XSL.

Vous pouvez également utiliser cette technique pour comparer les temps à l'aide de « temps Unix », par exemple