I have a strange behavior with JAXP date comparisons :
Here is a sample code :
            DatatypeFactory df = DatatypeFactory.newInstance();
            XMLGregorianCalendar d1 = df.newXMLGregorianCalendar(s1);
            XMLGregorianCalendar d2 = df.newXMLGregorianCalendar(s2);
            ret = (d1.compare(d2) <= 0)?Boolean.TRUE:Boolean.FALSE;
            logger.debug("funcDateBefore("+d1.toXMLFormat()+","+d2.toXMLFormat()+") -> "+ret);

Comparing 2011-09-23T11:17:21.815+02:00 to 2011-09-24 responds that first date is not before second date.
Comparing 2011-09-23T11:17:21.815+02:00 to 2011-09-25 responds that first date is before second date.

I think there is a bug here ; timezone is not so different that difference is more than 12 hours.
Implementation I have is org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl
Is there a Saxon replacement for this, and how could I use it ?

Thanks a lot in advance,