[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

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: Sat, 16 Apr 2011 13:04:54 -0400

ANN: Portable Data Component -- start/end
Hi Folks,

There are many examples where the start and end time (date, dateTime) must be recorded:

Example #1

Record the start and end time of a meeting. The meeting starts at 9am and ends at 10am:

    <meeting>
        <start>09:00:00</start>
        <end>10:00:00</end>
    </meeting>

Example #2

Record the start and end date of a conference. The conference starts on August 3, 2011 and ends on August 6, 2011:

    <conference>
        <start>2011-08-03</start>
        <end>2011-08-06</end>
    </conference>

Example #3

Sometimes there is a start date but no end date. The person started working for a company on October 9, 1990 and is still employed:

    <employment>
        <start>1990-10-09</start>
    </employment>

Example #4

A person left Beijing at 4pm on Saturday and arrived in New York at 2pm the same day!  

    <flight>
        <start>2007-07-08T16:00:00+08:00</start>
        <end>2007-07-08T14:00:00-05:00</end>
    </flight>


Rule: End Value is Greater Than Start Value

Common among all the examples is that the end value is greater than the start value:

  - The meeting end time is greater than the meeting start time.
  - The conference end date is greater than the conference start date.
  - The flight end date/time, when adjusted for time zone differences, is greater than the flight start date/time.

There is a co-constraint between the value of end and the value of start.

This is an ideal candidate for a portable data component. We can create an XML Schema complexType that declares the start and end elements, and use the new assert element to express the co-constraint:

    <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]


PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.