Saxon-JS Release Notes
Maintenance release 1.0.2
5 October 2017
Bug fixing maintenance release.
In general for use with Saxon-JS 1.0 SEFs should be produced with Saxon-EE 220.127.116.11 or
later, though a number of features introduced in Saxon-JS 1.0.1 require SEFs produced
with Saxon-EE 9.8 (see the documentation for details).
- A space-separated list can now be supplied in the
document attribute of
ixsl:schedule-action, to fetch
multiple documents before the contained call is invoked.
#2889: Missing error trapping in Calculate
#3268: Saxon-JS documentation app problems in Safari on iPad (and other handheld
#3362: reverse() modifies its argument
#3369: Incorrect test for node identity in p.genNode pattern matching
#3370: currentGroup / currentGroupingKey
#3377: HTML base tag ignored in stylesheetLocation and sourceLocation
#3380: xsl:analyze-string with a regex that matches a zero-length string
#3383: General Comparison in 1.0 compatibliity mode: cannot compare xs:string with
#3386: deep-equal() fails comparing attributes
#3393: "<" treated as entity characters within XPath.evaluate()
#3417: unparsed-text-lines() incorrect behaviour with blank lines
#3419: format-number() rounding issues
#3431: non-default exponentSeparator character not interpolated
#3440: Handling asynchronous document fetch failures
#3441: Asynchronous fetch for a list of documents
#3442: Problems reusing parameters after ixsl:schedule-action
#3454: Documentation for ixsl:schedule-action/@http-request
#3470: SaxonJS 1.0.1 fails when calling the key() function; SaxonJS 1.0.0 works well
Also includes a patch for a known Edge bug related to regular expressions used in reading XML
resources (see Forum issue #6873).
Maintenance release 1.0.1
21 July 2017
Maintenance release for use on web browsers. A number of new features require SEFs
produced with Saxon-EE 9.8 (in general SEFs should be produced with Saxon-EE 18.104.22.168 or
later for use with Saxon-JS 1.0).
- Many more XSLT 3.0 features are now implemented. Some require Saxon 9.8 at compile time.
for full details. Newly implemented features include:
xsl:where-populated, xsl:on-empty, xsl:on-non-empty, xsl:fork
- use of initial mode
- accumulators (requires Saxon 9.8)
collection() (requires Saxon 9.8)
- merging (requires Saxon 9.8)
- multiple packages (requires Saxon 9.8)
xsl:source-document in non-streaming mode (requires Saxon 9.8)
xsl:context-item (requires Saxon 9.8)
- Support for collations has been extended to XSLT instructions as well as XPath
- Regex character class subtraction
- Fixes for
xsl:evaluate (default XPath namespace; support for
@as result type restriction; support for
in addition to
- Additions to the
function-params to allow function call
collations to supply collations;
to supply collections.
initial-mode set to
"#unnamed" can be used to force use of the unnamed mode. If
is not set, then the default-mode specified in
xsl:package) is used, defaulting to the unnamed mode.
- Added interactive XSLT mechanism for making asynchronous HTTP requests directly from the
stylesheet - using the new
http-request attribute on
(requires Saxon 9.8). See HTTP
messages for more information.
- Using Saxon 1.0.0 or earlier, URIs in the
doc() function and in the
document attribute of
ixsl:schedule-action were always
interpreted relative to the SEF's location. In Saxon-JS 1.0.1, the behaviour depends on
whether the SEF is relocatable, since this will determine the
static-base-uri(). From Saxon 9.8, a relocatable SEF can be produced by
setting the Transform command line option
-relocate:on at compile time. If
the SEF is relocatable, then
static-base-uri() is the base URI of the SEF;
otherwise it is the location of the XSLT stylesheet at compile time. For full details
see the section about relative URIs at Source
#3004: Support for HTTP POST/PUT
#3036: Saxon-JS documentation app problems in Chrome on computers with touch screens
#3066: Specialist name() treatment of XHTML elements
#3130: Source document has a non-absolute base-uri()
#3131: XPath.evaluate - incorrect comparison typing for xs:QName
#3133: xs:numeric cast not preserving value type
#3134: map:get() key not being atomised
#3139: Complex Content incorrectly handing text-nodes
#3140: XPath.evaluate should check initial context-item cardinality
#3146: system-property("xsl:supports-dynamic-evaluation") returns "no"
#3148: xsl:evaluate doesn't support use of user-defined functions
#3149: Constructed element node lacks xmlns="" undeclaration
#3161: || operator in dynamic XPath does no type checking
#3167: Problems with QName hash-codes in trieWithCollation()
#3170: Attributes with no prefix in name get assigned 'ns'
#3203: Default namespace XHTML not appearing in namespace-uri-from-prefix()
#3216: Error QNames are not ordered
#3221: p.genPos pattern not implemented in Saxon-JS
#3231: Default treatment of Atomic items in text-only-copy incorrect
#3335: Lazy evaluation of sequence constructors - instructions with side effects evaluated
Major release 1.0.0
7 February 2017
First major release, for use on web browsers. For use with Saxon-JS 1.0, SEFs should be
produced with Saxon-EE 22.214.171.124 or later.
- For use with Saxon-JS 1.0, SEFs should be produced with Saxon-EE 126.96.36.199 or later. (Most
SEFs produced by older versions of Saxon-EE will run as before, but some will fail with an
error directing the user to regenerate the SEF.)
- Added Dynamic
for use with
xsl:evaluate, and directly via the XPath
- The use of collations in XPath functions is now implemented, see Conformance
for details (and restrictions).
- Known performance issues have been addressed.
#3071: Bad performance of xsl:result-document with deeply nested output content
#3095: XPath.evaluate requires platform initialisation
#3098: Supplied value "..." is not a valid xs:base64
Maintenance beta release 0.9.1.1
12 December 2016
Maintenance release for use on web browsers.
#3067: Specialist name() treatment of XHTML elements
Maintenance beta release 0.9.1
9 December 2016
Maintenance beta release for use on web browsers (Safari, Firefox, Chrome, Opera, Internet
Explorer, and Edge). This release can be used with SEFs produced by Saxon-EE 188.8.131.52 or
later, but for all the latest features use Saxon-EE 184.108.40.206 or later.
- The form
<xsl:result-document href="?."> can now be used to specify the
current context as the target for inserting generated HTML fragments, see Result
- Added support for the transform options
sourceText, see SaxonJS.transform.
- Values for stylesheet parameters with type
can now be supplied using the transform option
Saxon-EE 220.127.116.11 or later). See Supplying stylesheet parameters.
- The interactive XSLT function
ixsl:apply() is added (requires Saxon-EE
18.104.22.168 or later).
- The XSLT 3.0
xsl:evaluate instructions are now
implemented (requires Saxon-EE 22.214.171.124 or later).
- The third-party URI.js library is no longer used.
- Extended browser support: Saxon-JS 0.9 tested with current versions of Safari, Firefox and
Chrome; Saxon-JS 0.9.1 also tested with Internet Explorer, Edge and Opera.
#2752: JS: nashorn references in core (browser) code
#2796: JS: xs:date() can modify timezone for pure dates
#2833: JS: anomalous descendant behaviour under ixsl:page()
#2884: Registering event listeners for objects outside DOM
#2885: Use of URI.js
#2886: Converting JS Objects to XDM maps
#2888: Static base-uri for in-browser exported stylesheets.
#2890: document.createAttributeNS() deprecated - warning in Firefox
#2891: Checksum in SEF file
#2913: http://www.saxonica.com/saxon-js/documentation/ does not work with Edge
#2923: Incorrect comparison for xs:numeric and NaN
#2941: Crash when there is no context item
#2942: Failure to specify -target:JS
#2944: Use of xsl:sequence within copy situations is node-destructive
#2945: for-each-group context not being preserved over context-altering steps
#2947: Cities List example
#2948: SEF metadata
#2992: treat as not testing sequence cardinality
#3007: sourceNode or sourceText property of options argument of transform method not
#3008: ixsl:query-params() does not allow for multiple values associated with a single
#3012: In browser, do not always produce HTML elements in result documents when they
should be produced
#3020: _APPLY() construct has not been implemented in Saxon-JS
First beta release 0.9
28 July 2016
First beta release for use on web browsers with SEFs produced by Saxon-EE 126.96.36.199 or later.