Hi Mukul,
> <xs:assert test="if (exists(end)) then (end gt start) else true()" />
Actually, that was my first attempt. However, SAXON gave me an error on this data:
<flight>
<start>2007-07-08T16:00:00+08:00</start>
<end>2007-07-08T14:00:00-05:00</end>
</flight>
Error: "flight does not match the assertion"
That's why I formulated the assertion as I did, with type checking and type casting.
/Roger
-----Original Message-----
From: Mukul Gandhi [mailto:]
Sent: Saturday, April 16, 2011 8:06 PM
To: Costello, Roger L.
Cc:
Subject: Re: [xml-dev] ANN: Portable Data Component -- start/end
Hi Roger,
Nice example.
There's a minor suggestion though.
On Sat, Apr 16, 2011 at 10:34 PM, Costello, Roger L. <> wrote:
> <xs:assert test="
> if (exists(end)) then
> if (start castable as xs:dateTime) then
> xs:dateTime(end) gt xs:dateTime(start)
> else if (start castable as xs:date) then
> xs:date(end) gt xs:date(start)
> else if (start castable as xs:time) then
> xs:time(end) gt xs:time(start)
> else true()
> else true()" />
Since "start" and "end" are typed nodes during assertion evaluation, I
think the above assert expression can be written as follows,
<xs:assert test="if (exists(end)) then (end gt start) else true()" />
--
Regards,
Mukul Gandhi