W3C home > Mailing lists > Public > www-xml-schema-comments@w3.org > October to December 1999

dateTime Schema counter proposal

From: Arnold, Curt <Curt.Arnold@hyprotech.com>
Date: Fri, 3 Dec 1999 16:17:43 -0700
Message-ID: <61DAD58E8F4ED211AC8400A0C9B46873415555@THOR>
To: "'xml-dev@ic.ac.uk'" <xml-dev@ic.ac.uk>
Cc: "'www-xml-schema-comments@w3.org'" <www-xml-schema-comments@w3.org>
This message is my starting suggestion for an overhaul of the date and time
related data types in the Sept working draft of the XML Schema Datatypes
document (http://www.w3.org/TR/xmlschema-2/).  I hope this can engender some
discussion on xml-dev and we can then can donate something that can be
incorporated quickly into the XML Schema working groups process (hopefully
in time for the next draft).  I'm am not a W3C member so this is not an
officially endorsed W3C effort.

My problems with the current draft:

1. Acceptance of ISO 8601 truncated forms without a mechanism to disallow
them makes mapping to existing programming language date and time types
problematic and engenders a lot of complexity.  The use of truncated forms
seems to oppose the XML design criteria of not adding complexity to gain
terseness.

For example, --15-04 is supposed to represent April 15th of every year (or
of an unspecified year).  There is no mechanism to fit that into a datatype
that represents an absolute date (such as VT_VARIANT or COleDateTime or
corresponding Java datatypes/classes).

2. Use of hh:mm:ss form for time durations makes it difficult to represent
intervals like 120 days.  Also, there is no provision for disallowing
non-exact durations (such as durations including years or months terms that
cannot be unambiguously converted to seconds) 

3. There is no mechanism for requiring or disallowing time zone qualifiers.

Okay, here goes

Note: in all the patterns below when I used the + sign, it indicates either
a + or - appearing in its position.

remove timeInstant and recurringTimeInstance.

x.x.x. date

Represents an particular day of a particular calendar year at an explicitly
stated or implied time zone.

x.x.x.x lexicalRepresentation

A single lexical representation, which is a subset of the lexical
representations allowed by ISO 8601, is allowed for date. This lexical
representation is the ISO 8601 extended format with optional time zone
specifier: CCYY-MM-DD[ Z | +hh:mm].  The presence of the time zone qualifier
is controlled using the timeZone facet.
Examples:
1999-12-04Z
1999-12-04-06:00
1999-12-04
x.x.x time
Represents a specific instant in a unspecified day.
x.x.x.x Lexical Representation
A single lexical representation, which is a subset of the lexical
representations allowed by ISO 8601, is allowed for timeDuration. This
lexical representation is the ISO 8601 extended format Thh:mm[:ss[.sss]][Z |
+hh:mm]
p.s. 
Examples:
T00:15Z
T12:30:00+05:00
T13:00
x.x.x dateTime
A particular instant on a particular date in an particular calendar year.
x.x.x.x Lexical Representation

CCYY-MM-DDThh:mm[:ss[.sss]][ Z | +hh:mm]

Examples:

1999-12-04T15:03
1999-12-05T15:03+05:00
1999-12-05T15:03:15.123+05:00

x.x.x timeDuration

A time duration is a defined length of time, such as 12 hours.

x.x.x.x Lexical Representation

There are two allowable lexical representation of timeDuration, one is
consistent with ISO 8601 section 5.5.3.2 P[nY][nM][nD][nH][nM], the second
is lexical representation of a real datatype interpreted as duration in
seconds.

Examples:

P6W  : Six weeks (this is, 42 days)
P12H30M : Twelve hours 30 minutes
45000 - 45000 seconds
1e-6 - one microsecond

Note: This ISO form was chosen since the alternative representation has
difficultly representing durations such as 120 days.


x.x.x timeZone

Indicates a specific offset from Universal Coordinated Time.

x.x.x.x Lexical Representation

Two forms, the first, Z indicates no offset from UTC, the second is +hh:mm.

Constraining facets

x.x.x timeZone facet

The time zone facet constrains the appearance of a time zone specifier and
qualifies date, time and dateTime datatypes.

Schema for timeZone facet:  I expressed default as an attribute so it could
be distinguished from the default element and could be typed as timeZone.

<element name='timeZone'>
	<archetype>
		<attribute name='minOccurs'>
			<datatype name="integer"/>
			<default>0</default>
		</attribute>
		<attribute name='maxOccurs'>
			<datatype name="integer"/>
			<default>1</default>
		</attribute>
		<attribute name="default">
			<datatype name="timeZone"/>
		</attribute>
		<attribute name="fixed">
			<datatype name="boolean"/>
		</attribute>
	</archetype>
</element>

Examples of use

<datatype name="zonedDateTime">
	<basetype name="dateTime"/>
	<!-- time zone must appear -->
	<timeZone minOccurs="1"/>
</datetype>

<datatype name="CSTdefaultTime">
	<basetype name="time"/>
	<!-- if time zone is not specified, it is implied to be CST  -->
	<timeZone default="-06:00"/>
</datatype>

<datatype name="localTime">
	<basetype name="time"/>
	<!-- time zone may not appear  -->
	<timeZone maxOccurs="0"/>
</datatype>


<datatype name="CSTDate">
	<basetype name="date"/>
	<!-- date can either be 1999-12-04 or 1999-12-04-06:00, but no other
time zone    ->
	<timeZone default="-06:00" fixed="true"/>
</datatype>

x.x.x precise facet

The precise facet qualifies timeDuration and disallows the use of year and
month terms (which cannot be unambiguously converted to a duration in
seconds).

Example:

<datatype name="preciseDuration">
	<basetype name="timeDuration"/>
	<precise/>
</datatype>

Note: comparisions should not be done of time, dateTime or date datatypes
unless the time zone is explicit or implied by the timeZone facet.

Note: here are some ways of representing some of the ISO 8601 functionality
that we lost, by using multiple attributes (or elements) to hold multiple
pieces of information.

Recurring date:

<Session>
	<!-- recurring day (one specific Friday) and a recurrence frequency
->
	<RecurringDay day="1999-12-04" repeats="P1W"/>
</Session>

<TaxFilingDeadline dayTime="1999-04-15T24:00" repeats="P1Y"/>

Time Period

<TimePeriod start="1999-12-06T09:00-04:00" end="1999-12-06T16:00-04:00"/>
<TimePeriod start="1999-12-06T09:00-04:00" duration="25200"/>
<TimePeriod start="1999-12-06T09:00-04:00" duration="P7H"/>
Received on Friday, 3 December 1999 18:20:14 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 23:08:45 UTC