XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
RE: ANN: Portable Data Component -- start/end

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]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS