Subject: RE: 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: 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 < foo/@start-date">
>
> It always evaluates to False under Saxon 6.5.2 (ie if I
> use > instead of < 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
|