Hi, The Xalan-C GSoC 2012 project is moving forward. Here is an outline of what EXSLT functions are implemented and which ones need work.
Samuel will be spending his primary effort toward implementing the XPath functions in the http://exslt.org/dates-and-times namespace. Sincerely, Steven J. Hathaway GSoC Mentor -------- Original Message -------- Subject: Xalan-C dates-and-times // and more Date: Mon, 21 May 2012 09:25:18 -0700 (PDT) From: shath...@e-z.net To: Samuel Medeiros <ccc.sam...@gmail.com> CC: shatha...@apache.org Welcome Samuel, Here is some discussion of the exslt library and how it applies to our coding efforts this summer. I will continue to mentor and review your work. Namespace: "http://exslt.org/dates-and-times" This set of functions needs the most work. Only the "date-time()" function has an implementation. To be compliant with the current XML standards, these functions will only implement the Gregorian Calendar Algorithm. There is no year zero. The year -0001 = 1 (BC) is the immediate predecessor to year 0001 = 1 (AD). This conforms to an earlier draft for ISO dates. The XML definition for xs:dateTime does not have a year zero. The XML definition for xs:dateTime does not support the Julian calendar, only the proleptic Gregorian Calendar algorithm is supported. The ratified ISO dates include a year zero, but this has not been updated into the XML standards for the xs:dateTime. The xs:dateTime datatype has no year zero. [1] http://www.w3.org/TR/xmlschema-2/#dateTime "date-time()" already implemented The first order of business is to create the methods by which dates and durations can be recognized and processed. Then it should be simple to wrap these methods into XPath function extensions so they can be incorporated into the XPath interpreter. The exslt dates-and-times namespace is described in [2] http://www.exslt.org/date/index.html The XPath exslt functions to be implemented in this namespace are add() add-duration() date() date-time() -- Already Implemented day-abbreviation() day-in-month() day-in-week() day-in-year() day-name() day-of-week-in-month() difference() duration() format-date() hour-in-day() leap-year() minute-in-hour() month-abbreviation() month-in-year() month-name() parse-date() seconds-in-minute() seconds() sum() time() week-in-month() week-in-year() year() date-format() It is currenly unclear how locale spelling for dates, months, and their abbreviations is to be handled. This becomes an implementation dependent issue. Should we provide a base locale for spelling that can be overwritten using a set of exslt functions? Such a set of functions could be: set-day-names(days of week names) set-day-abbr(days of week abbreviations) set-month-names(month names) set-month-abbr(month abbreviations) Namespace: "http://exslt.org/strings" Most functions in this group are already implemented. The implemented functions return string objects. New exslt functions in this group for implementation are replace(), split(), and tokenize(). These three functions create and return node-set objects. Namespace: "http://exslt.org/dynamic" We already have the "evaluate()" function. New exslt functions in this group for implementation are map(), max(), min(), sum(). Hold off implementing these until after the dates-and-times namespace is complete. This will require the processing of node-set trees. Namespace: "http://exslt.org/math" All functions in this group are already implemented. Namespace: "http://exslt.org/sets" All functions in this group are already implemented. Namespace: "http://exslt.org/common" All functions in this group are already implemented. The<document> element is easier to implement in Java. Significant rework for Xalan-C is required and will take more time than we have for the summer. Thread-Safe Programming I have identified some system date-time functions that are not thread-safe. I will describe these issues later along with tools and programming practices to accommodate their use. Sincerely, Steven J. Hathaway Xalan Documentation Project