From: Colin P. A. <co...@co...> - 2005-09-27 16:09:51
|
If you can cast your minds back to when I was first looking at ISO8601 dates, you may remember a problem with the representation of BCE dates - ISO 8601 (and XML Schema 1.0, following it), declared that the year before 0001 (1 CE), namely 1 BCE, should be written as -0001. Accordingly, in DT_XSD_DATE_TIME_PARSER, I add one to the literal value of the lexical year, for use with DT_DATE_TIME etc. The second edition changed this to be 0000. And it seems that XML Schema 1.1 will go this way (the current draft is for working group members only, so I can't actually see it, but XML Schema 1.0 second edition makes it clear that this will happen). The XPath working group have decided to meet this conundrum with the following: 1. Conformant implementations need to support year values greater than 0000. 2. Implementations can chose to support the year value 0000 and negative year values. 3. The results of date/time arithmetic that crosses year 0000 are implementation defined. In other words, you have the choice of only supporting CE dates, or making a randon choice as to how to interpret BCE literals. Talk about fence sitting! For DT_XSD_DATE_TIME_PARSER, I think we should have a status setting as to whether or not to follow XML Schema 1.0 or 1.1. Perhaps with two different creation routines, named make_1_0 and make_1_1 (neither named make, so as to force users to make a consious decision). For Xpath, I'll use the 1.1 decision (it's what the astronomical, and other scientific communities, along with DT_DATE_TIME all use). -- Colin Adams Preston Lancashire |