Saxonica: XSLT and XQuery Processing: Issues fixed in Alpha 0.4

Issues fixed in Alpha 0.4

The table below lists a summary of the issues fixed in the Alpha 0.4 release of Saxon-CE





The XML declaration is included as a node in the XDM

With internet explorer the XML Declaration is included as a processing-instruction at the root level of the XPath Data Model. This can cause unexpected XPath results if they access top-level nodes.


XPath that includes a data() call will not compile

Compile time error warning shows


Iterating on the result of xsl:copy-of instruction fails

Run time exception occurs when an attempt is made to use the result of an xsl:copy-of instruction


Static-base-uri function returns wrong result type

Calling this function returns a xs:string instead of xs:anyURI


Browser unresponsive on accessing an XSLT input parameter

An attempt to resolve the name of an xsl:param at the top-level causes an infinite loop. Note: XSLT input parameters are not yet supported in CE, but this would cause an issue with XSLT ported from another source.


ClassCast exception thrown using xsl:analyse-string

String is returned instead of a node, so using XPath that expects a node will throw an exception


Using last() within xsl:analyse-string gives an error

Iterating result of xsl:analyse-string fails because regex pattern is not reset at start


Out of stack space exception when calling substring

Optimisation within substring causes exception when setting the string length


Casting a negative year with as xs:dateTime gives unexpected result

Returns year value that is 2 higher than expected


Casting a negative year with as xs:date gives an unexpected result

Returns year value that is 2 higher than expected


Casting 21999 as gYearMonth returns 1999

When called with a year argument value with 6 digits,returns only the last 5 digits


Casting xs:base64Binary('PM24') as xs:base64Binary returns the empty sequence

Creating a Base64 value from a single token results in a returned empty sequence


Casting 21999 as gYearMonth returns 1999

When called with a year argument value with 6 digits,returns only the last 5 digits


Casting xs:float(1.75e-3) returns number with trailing zeros

Conversion to float results in number with trailing zeros


xsl:number does not format numbers correctly

The number format Ww is ignored because xsl:number returns a BigDecimal type and the number formatter only formats long types


Exception thrown by 'disable-output-escaping' attribute in xsl:value-of

An exception is thrown, but because there's no serialization, this attribute should be ignored, no exception should be thrown


xs:time() function call on time with fractions of a second

This function throws a NumberFormat exception because .006 is converted to ..006 when the time is parsed


seconds-from-time() function returns trailing zeros

Values from functions that are converted to the DecimalValue type (internally) do not have trailing zeros stripped this affects many functions


formatDate using Ww pattern truncates values to 2 chars

The formatDate function does not correctly recognize non-digit patterns and therefore truncates the text representation of years as if they were digits


Unhelpful error when 'extension-element-prefixes' not set

If the ixsl namespace prefix is (accidentally) not declared as an extension element prefix then the resulting error message when an ixsl element is treated as a literal result element does not help identify the root cause


The ixsl:eval function always returns invalid values

This function returns the lexical JavaScript instead of the result of the evaluation


Node results from an ixsl:function can not be iterated as nodes

The (internal) HTMLNodeWrapper is not used to wrap JavaScriptObjects that are node results returned from 'native' JavaScript calls - this causes exceptions when an attempt is made to iterate them as nodes. When required, the NodeWrapper must be converted back to a JavaScript object.


When evaluating $element/@style, the string '[object]' is returned

Internet explorer returns a style object instead of a string containing the attribute value when the style attribute is accessed.


When an attempt is made to iterate the attribute axis, Internet Explorer thows an exception

An XPath such as $element/@* results in an error because IE does not support the attributes property of an element


An exception is thrown when an invalid attempt is made to set a style property

All browsers, except IE, handle such style property errors silently. Behaviour with IE should be consistent with the other main browsers.


Unhelpful error message when a DOM exception is thrown when attempting to add an invalid text node to an element,

The error message currently states that an invalid method or property was accessed, instead the message should give details of the text node being appended or inserted.


ClassCast exception thown by distrinct-values()

This exception is thrown when 2 or more string values are contained within the sequence that is the argument of the function


multiple xsl:key instructions not added to the key set

This occurs when the 'use' attribute of xsl:key instructions is an atomic value. The cause is that the equals method of the Literal class does not test atomicValue types for equality, so the KeyManager does not add subsequent keys because they appear to be the same.


result-document href?select= does not return a node if the atomic value of node is required

For example using href=”?select=//div[@id='elect']” results in a 'ClassCastException' - for some other expression no node is selected but there's no exception warning


result-document href?select= raises an exception when any function is called within the XPath

E.g. div[not(id='elect')] would raise an exception


result-document href?select= does not work with the data source XML set

[Patched in A0.4.1]result-document href?select= does not select a node when the HTML<script> element sets the XML source in thedata-source attribute