This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Compare dates in xsl. Is posible?


Hi Carlos,

> In a xml file i have a field with the date (2002-03-01)
> in a xsl template can i compare this date with the today date?
> how?
> i want to make a thing if is minor that 7 days.
> is this posible?

It's possible, but not straight-forward.

First, there's no way in XPath 1.0 to find out what today's date is
from within a stylesheet. There are two ways around this: you can pass
today's date in as a parameter to the stylesheet, or you can use an
extension function such as date:date-time() (see
http://www.exslt.org/date/functions/date-time). The date:date-time()
extension function is implemented natively in Saxon and there's a
MSXML version courtesy of Chris Bayes available from the above URL.

Second, there's no way in XPath 1.0 to add or subtract days from a
date. If you're passing in the current date as a parameter, it's
probably easiest to actually pass in the current date minus a week.
Otherwise, you can use date:add-duration() (see
http://www.exslt.org/date/functions/add-duration), which is available
written in XSLT or in JavaScript for MSXML. To get today's date minus
7 days, for example, you can do:

  date:add-duration(date:date-time(), '-P2D')

Finally, there's no way in XPath 1.0 to compare two dates in the format
CCYY-MM-DD. However, this is fairly easy to get round if you convert
the dates to numbers by deleting the -s with the translate() function.

For example, if the date is held in the date attribute, then you could
do:

  translate(date:add-duration(date:date-time(), '-', ''), '-P2D') >
  translate(@date, '-', '')

Hopefully, this will all be a lot easier in XPath 2.0...
  
Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]