OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help



   Re: XML Schema date syntax

[ Lists Home | Date Index | Thread Index ]
  • From: ht@cogsci.ed.ac.uk (Henry S. Thompson)
  • To: Lars Marius Garshol <larsga@garshol.priv.no>
  • Date: Thu, 09 Nov 2000 10:42:38 +0000

Lars Marius Garshol <larsga@garshol.priv.no> writes:

> I have recently come across a case where one wants to make an XML
> Schema for the interchange syntax for an existing standard based on
> relational databases.
> This existing standard already has a lexical representation for its
> dates, of the form CCYYMMDD. The question is, how can one make an XML
> Schema data type for dates that have this lexical representation?
> I see that XML Schema allows dates to have a pattern constraining
> facet, the question is just how this will be interpreted by tools.
> If the pattern were to be defined as 
>  '[12][0-9][0-9][0-9][01][0-9][0-3][0-9]'
> what would this mean? Would tools accept it?

It means what you think, but it shouldn't be accepted.  For better or
worse, XML Schema v.1 operates a "sender must make right" approach to
data representation: we define the lexical form, you must conform to
it if you want the specified semantics.  In the absence of
micro-syntax<-->semantics mapping rules, this is the only way to
guarantee applications will know what date is actually meant.  This is
why Rick Jelliffe says XML Schema puts the needs of data-orientated
applications, which are presumed to care about semantics, ahead of the
needs of document-orientated applications, which are presumed to just
want to validate character sequences, and are only making semantic
assertions for human-consumption/legacy-application-documentation, not 
for real interoperability.

You can get the effect you desire with a type definition such as

 <xs:simpleType name="myDate">
  <xs:restriction base="xs:token">
   <xs:pattern value="[12][0-9][0-9][0-9](0[1-9]|1[0-2])([0-2][0-9]|3[01])"/>

which is of course still not quite right, because it allows
e.g. 19990230.  See Michael Sperberg-McQueen's article in Markup [ref
not immediately available] for a regexp which does much better.

  Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
          W3C Fellow 1999--2001, part-time member of W3C Team
     2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
	    Fax: (44) 131 650-4587, e-mail: ht@cogsci.ed.ac.uk
		     URL: http://www.ltg.ed.ac.uk/~ht/


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

Copyright 2001 XML.org. This site is hosted by OASIS