|
[XQuery Talk Mailing List Archive Home] [By Date] [By Thread] [By Subject] [By Author] [Recent Entries] [Reply To This Message] parsing datesJoe Wicentowski joewiz at gmail.comMon Oct 5 21:16:57 PDT 2009
James, I've encountered the same issue with dates in TEI documents. What follows are some thoughts/suggestions about using TEI dates in eXist. I think the issue is The TEI Guidelines allows/encourages one to mix date datatypes, thereby conflating data with precision in dates (http://www.tei-c.org/release/doc/tei-p5-doc/en/html/CO.html#CONADA): ------ "Partial dates or times (e.g. 1990, September 1990, twelvish) can be expressed in the when attribute by simply omitting a part of the value supplied. Imprecise dates or times (for example early August, some time after ten and before twelve) may be expressed as date or time ranges... The @when attribute always supplies a normalized representation of the date given as content of the date element. The format used should be a valid W3C schema datatype. Some typical examples follow: * <date when="2001">The year 2001</date> * <date when="2001-09">September 2001</date> * <date when="2001-09-11">11 Sept 01</date> * <date when="--09-11">9/11</date> * <date when="--09">September</date> * <date when="---11">Eleventh of the month</date> * <time when="08:48:00">8:48</time> * <date when="2001-09-11T12:48:00">Sept 11th, 12 minutes before 9 am</date> Note in the last example the use of a normalized representation for the date string which includes a time: this example could thus equally well be tagged using the time element. The following examples demonstrate the use of the date element to mark a period of time: * <p>Those five years — <date from="1918" to="1923">1918 to 1923</date> — had been, he suspected, somehow very important.</p>" ----- If you mix 2+ date datatypes, you will encounter some difficulties when doing what you asked about. Setting range indexes in eXist is impossible if you mix datatypes, as far as I know. I think we might encode TEI texts more effectively to make processing easier by (1) either using a consistent datatype or (2) replacing the generic @when with a new way of encoding which implies the datatype. As far as your specific question, you could run a series of "if ($date castable as ...) then ... else" statements on the following datatypes: * date * gYear * gMonth * gDay * gYearMonth * gMonthDay * time * dateTime As an alternative to conditional expressions, I'm not sure if typeswitch would work for this? - Joe On Mon, Oct 5, 2009 at 7:05 PM, James Cummings <http://x-query.com/mailman/listinfo/talk> wrote: > Hi there, > > I've a silly question about the best way to parse dates. I'm passing > a parameter (in eXist) that is part of the URL for an xquery and I > want to separate it into its individual parts of year month and day. I > could test the string and do substring-before and after and such, or > create my own function, but it seemed better practice to use the > functions like year-from-date and month-from-date. So I tried: > > let $date := request:get-parameter("date", ("1789-01-01")) cast as xs:date > let $year := fn:year-from-date($date) > let $month := fn:month-from-date($date) > let $day := fn:day-from-date($date) > > which works fine when the date is YYYY-MM-DD. But what I want to > achieve is being able to handle YYYY-MM-DD, YYYY-MM or just YYYY. The > last two give me an error of "xs:date must not have hour, minute or > second fields set" (erm... which it doesn't, which is why I'm > confused). I'm happy for $month and $day to be empty if they don't > exist. > > I'm sure it is something terribly obvious with the datatype. Should I > just be breaking it down to its component parts myself? It just > seemed like I was reinventing the wheel. > > Thanks for any suggestions. > > -James > _______________________________________________ > http://x-query.com/mailman/listinfo/talk > http://x-query.com/mailman/listinfo/talk >
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|






