RE: [xml-dev] ANN: Portable Data Component -- start/end

From
Costello, Roger L. <>
To
"" <>
Date
2011-04-17T08:53:42Z
ID
<>
Thread
RE: [xml-dev] ANN: Portable Data Component -- start/end
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