[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
RE: ANN: Portable Data Component -- start/end
- From: "Costello, Roger L." <costello@mitre.org>
- To: "xml-dev@lists.xml.org" <xml-dev@lists.xml.org>
- Date: Mon, 18 Apr 2011 14:18:38 -0400
Hi Folks,
Suppose that a person records the start time and end time of a movie, which starts at 11pm and ends at 1am the next day:
<movie>
<start>23:00:00</start>
<end>01:00:00</end>
</movie>
Validating that against the portable start/end data component (see below) results in this error: "movie does not match the assertion".
Had the movie times been specified using dateTime:
<movie>
<start>2011-04-16T23:00:00</start>
<end>2011-04-17T01:00:00</end>
</movie>
then there would be no error.
QUESTION
Who's at fault?
- The person who specified the movie times using just time values?
- Or, the portable start/end data component for throwing an error on perfectly good movie times?
/Roger
P.S. Here's the portable start/end data component:
<xs:complexType name="start-end-date-time">
<xs:sequence>
<xs:element name="start">
<xs:simpleType>
<xs:union memberTypes="xs:date xs:time
xs:dateTime" />
</xs:simpleType>
</xs:element>
<xs:element name="end" minOccurs="0">
<xs:simpleType>
<xs:union memberTypes="xs:date xs:time
xs:dateTime" />
</xs:simpleType>
</xs:element>
</xs:sequence>
<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()" />
</xs:complexType>
Comments welcome.
/Roger
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]