Saxon-SA is the commercial version of the Saxon XSLT and XQuery processor.
Queries were run as supplied, with no changes made to accommodate the test driver.
A number of bug reports were raised against the test suite; in many such cases, a corrected version of the test was used in place of the original; in other cases, the test was not run.
The test driver is written in XSLT 2.0, as a transformation that takes the catalog as its principal input, and generates the result listing as its primary output. Results of individual queries are generated as secondary outputs. Some Saxon XSLT extensions are used, for example try/catch to catch errors in test queries, and the Saxon mechanisms for calling external Java functions are used to invoke query compilation and execution.
XML comparisons are performed using the saxon:deep-equal() extension function. This is an extended version of the standard deep-equal() function that allows control over the details of the comparison. The options used are "NPCS": this takes into account namespace nodes, processing instructions, and comments, and compares nodes using their string value rather than their typed value. This is believed to be equivalent to the canonicalization procedure described in the test specification. The invocation of deep-equal() is adjusted so that a document node is considered equal to its immediate element child. Since many of the test results contain too much or too litte whitespace, when a straight deep-equals() fails, a second attempt is made after eliminating whitespace-only text nodes from both trees. A comment is recorded against the test results where this is necessary.
Fragment and text comparisons are performed by wrapping the reference results in a dummy element node, parsing the result, and then performing a deep-equal() comparison that ignores this wrapper node.
If the expected result is an error, and the test produces an error, then it is reported as having been run successfully even if the error codes differ. In all cases where the error codes differ from those expected, this is recorded as a comment in the test report.
Two results are reported as "fail" because of issues concerning double-to-string conversion. This has been raised as an issue on the specification.