XSLT 2.0 implementation
The standard URI resolver for the unparsed-text() function now follows the spec more closely by examining the media type of the retrieved resource (which will typically be available only if it is obtained via an HTTP connection). In this case, if the media type indicates XML, the encoding is inferred as described in the XML specification, ignoring any encoding that was requested in the second argument. The URI resolver now also has a debug flag allowing tracing of the process of connection, examination of HTTP headers, and inference of an encoding.
The system-property() function has changed so that, with the exception of properties in the XSLT namespace,
the function is always evaluated at run-time rather than at compile time. This is because the values of system properties
in the execution environment may differ from their values at compile time. When the configuration property ALLOW_EXTERNAL_FUNCTIONS
is set to false access to system properties is now disabled: this is because some of them, such as user.dir
, could
be considered to compromise security.
The implementation of format-dateTime() and similar functions has changed in the way it handles the [ZN]
component. This requests the time-zone as a named timezone. This is problematic, because the information is not really
available: the data type maintains only a time zone offset, and different countries (time zones) use different names
for the same offset, at different times of year. If the value is a date or dateTime, and if the country argument is
supplied, Saxon now uses the Java database of time zones and daylight savings time (summer time) changeover dates
to work out the most likely timezone applicable to the date in question. This is still a guess, but it is now more
likely to be right.
If the timezone is formatted as [ZN,6] (specifically, with a minimum length of 6 or more) then the Olsen timezone name
is output (again, this requires the country to be supplied). The Olsen timezone name generally takes the form
Continent/City
, for example "Europe/London" or "America/Los_Angeles". If the date/time is in daylight
savings time for that timezone, an asterisk is appended to the Olsen timezone name.
The formatting of noon/midnight in the 12-hour clock has been changed. Although in the USA it seems to be fairly
common (though not universal) to represent noon as "pm" and midnight as "am", this usage does not appear to be widely accepted
in the UK. Therefore, if a maximum width of 8 or more characters is specified (thus: [Pn,*-8]
), noon and midnight
will now be written in full.
Saxon now implements the rule that within a single stylesheet module, all the use-when
expressions will see
stable values for functions such as current-dateTime()
.
The implementation of xsl:copy-of
has changed so that when a document or element node is copied,
if line numbering was requested at the configuration level, then line numbers of element nodes are copied from the
source document to the result document. For other instructions that create elements, the line number of the resulting
element will reflect the position in the stylesheet or query of the instruction that created the element. The line
number is accessible using the saxon:line-number() function. When running from the command line, this works only
if the -l
option is specified, or if a trace listener is in use.
The custom Ant task for running Saxon has been fleshed out with additional attributes to give greater control over the transformation process. Detail are here.