[Bug 3019] [XSLT 2.0] format-date() - negative years

http://www.w3.org/Bugs/Public/show_bug.cgi?id=3019


mike@saxonica.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED




------- Comment #2 from mike@saxonica.com  2006-05-12 18:31 -------
Following discussion over several meetings and on email, here is the final text
of the changes agreed.

(a) in the list of component designators, against Y I have added a note that
the value is the absolute value of the year.

(b) The text concerning the ISO calendar now reads:

    The ISO 8601 calendar (<bibref ref="ISO8601"/>), 
    which is included in the above list and designated <code>ISO</code>, 
    is very similar to the Gregorian calendar designated <code>AD</code>, 
    but it differs in several ways. The ISO calendar
    is intended to ensure that date and time formats can be read
    easily by other software, as well as being legible for human
    users. The ISO calendar prescribes the use of particular numbering
    conventions as defined in
    ISO 8601, rather than allowing these to be localized on a per-language     
    basis. In particular it
    provides a numeric 'week date' format which identifies dates by
    year, week of the year, and day in the week; 
    in the ISO calendar the days of the week are numbered from 
    1 (Monday) to 7 (Sunday), and
    week 1 in any calendar year is the week (from Monday to Sunday)
    that includes the first Thursday
    of that year. The numeric values of the components year, month,
    day, hour, minute, and second
    are the same in the ISO calendar as the values used in the lexical    
    representation of the date and
    time as defined in <bibref ref="xmlschema-2"/>. 
    The era ("E" component)
    with this calendar is either a minus sign (for negative years) 
    or a zero-length string (for positive years).
    For dates before 1 January, AD 1, year numbers in
    the ISO and AD calendars are off by one from each other: ISO year
    0000 is 1 BC, -0001 is 2 BC, etc.</p>

Note:
    The value space of the date and time data types, as defined in 
    XML Schema, is based on
    absolute points in time. The lexical space of these data types 
    defines a representation of these absolute points in time using the    
    proleptic Gregorian calendar,
    that is, the modern Western calendar extrapolated into the past and the 
    future; but the value space is calendar-neutral. The
    date formatting functions produce a representation
    of this absolute point in time, but denoted in a possibly
    different calendar. So, for example, the date whose lexical 
    representation in XML Schema is <code>1502-01-11</code> 
    (the day on which Pope Gregory XIII was born) might be
    formatted using the Old Style (Julian) calendar as 
    <code>1 January 1502</code>. This reflects the fact
    that there was at that time a ten-day difference between 
    the two calendars. It would be
    incorrect, and would produce incorrect results, to represent this 
    date in an    element or attribute 
    of type <code>xs:date</code> as <code>1502-01-01</code>, 
    even though this might reflect the way 
    the date was recorded in contemporary documents.

    When referring to years occurring in antiquity, modern historians 
    generally use a numbering system in which there is no year zero 
   (the year before 1 CE is thus 1 BCE). This is the convention that 
    <rfc2119>should</rfc2119> be used when the
    requested calendar is OS (Julian) or AD (Gregorian). When the requested
    calendar is ISO, however, the conventions of ISO 8601   
    <rfc2119>should</rfc2119> be followed: here the year 
    before +0001 is numbered zero. In <specref ref="XMLSCHEMA"/> 
   (version 1.0), the value space for <code>xs:date</code> and  
    <code>xs:dateTime</code> does not include a year zero: 
    however, a future edition is expected to endorse the 
    ISO 8601 convention. This means that the date on
    which Julius Caesar was assassinated has the ISO 8601 
    lexical representation
    -0043-03-13, but will be formatted as 15 March 44 BCE 
    in the Julian calendar
    or 13 March 44 BCE in the Gregorian calendar (dependant on the chosen
    localization of the names of months and eras).

Received on Friday, 12 May 2006 18:32:03 UTC