RE: [xsl] testing dates

Subject: RE: [xsl] testing dates
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Wed, 8 Sep 2004 10:38:26 +0100
In XPath 1.0 the operands of "<" are converted to numbers. If that fails,
you get NaN, and NaN compared with anything is false.

This changes in XPath 2.0: an improvement, though also, sadly, a source of
incompatibility.

The solution to your problem is to strip the hyphens using translate().

Michael Kay
 

> -----Original Message-----
> From: Peter Flynn [mailto:pflynn@xxxxxx] 
> Sent: 08 September 2004 10:23
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] testing dates
> 
> If $isodate contains "2004-06-27" and a CDATA attribute
> @start-date contains "2004-09-05", what should be the result of:
> 
> <xsl:if test="$isodate &lt; foo/@start-date">
> 
> It always evaluates to False under Saxon 6.5.2 (ie if I
> use &gt; instead of &lt; I get the same result: False). 
> 
> Is there something about comparing strings containing digits 
> that I have
> missed? Are they being evaluated as expressions 
> (eg 2004 minus 6 minus 27)?
> 
> ///Peter

Current Thread