EXSLT extensions
EXSLT was an initiative to define a standardized set of extension functions and extension elements that can be used across different XSLT processors. Most of its activity was in the era of XSLT 1.0, and many of the functions that were defined are no longer needed in an XSLT 2.0 environment because there are suitable facilities in the standard. Nevertheless, Saxon implements some of these functions for compatibility reasons.
Details of the functions supported (with some additional information about the Saxon implementation) can be found in the main Function Library.
Saxon supports the EXSLT modules Common, Math, Sets, Dates and Times, and Random. These functions are available both in XSLT and in XQuery. The full list of EXSLT extension functions implemented is:
-
common (namespace http://exslt.org/common): node-set(), object-type(). These are retained for compatibility with XSLT 1.0 stylesheets.
-
math (namespace http://exslt.org/math): abs(), acos(), asin(), atan(), atan2(), constant(), cos(), exp(), highest(), log(), lowest(), max(), min(), power(), random(), sin(), sqrt(), tan()
-
sets (namespace http://exslt.org/sets): difference(), intersection(), leading(), trailing(), has-same-node()
-
dates-and-times* (namespace http://exslt.org/dates-and-times): add(), add-duration(), date(), date-time(), day-abbreviation(), day-in-month(), day-in-week(), day-in-year(), day-name(), day-of-week-in-month(), difference(), duration(), hour-in-day(), leap-year(), minute-in-hour(), month-abbreviation(), month-in-year(), month-name(), second-in-minute(), seconds(), sum(), time(), week-in-month(), week-in-year(), year()
-
random (namespace http://exslt.org/random): random-sequence()
* The specifications of the EXSLT date-and-time handling functions have little to say about timezones. Saxon generally handles inputs with or without a timezone, and uses the XPath 2.0 concept of implicit timezone to interpret the meaning of dates/times without a timezone. The current date and time used by EXSLT functions is the same as that used by the XPath 2.0 current-dateTime() function.
EXSLT extensions that overlap XSLT 2.0 functionality have sometimes been retained in cases
where they have no impact on the Saxon core code, but in cases (such as
func:function
) where the semantics are inconveniently different from XSLT
2.0, they have been withdrawn.