w3c / qt3tests

Tests for XPath and XQuery
27 stars 17 forks source link

fn:transform(): when an XSLT 2.0 processor is requested but an XSLT 3.0 processor is invoked #30

Closed michaelhkay closed 3 years ago

michaelhkay commented 4 years ago

I think that test case fn-transform-82e is misinterpreting the spec.

If fn:transform() requests an XSLT 2.0 processor, and if no XSLT 2.0 processor is available, but an XSLT 3.0 processor is available, then the function executes with an XSLT 3.0 processor. This is the situation with Saxon 10, which no longer offers XSLT 2.0 processing as an option.

The question then is whether the "global-context-item" option to fn:transform() should be ignored. The wording in the spec is:

For invocation of an XSLT 2.0 processor (see [XSL Transformations (XSLT) Version 2.0]), the supplied options must include all of the following (if anything else is present, it is ignored):

followed by another section:

For invocation of an XSLT 3.0 processor...

Which of these two sections applies? I think it is the one relevant to the processor version that is actually invoked, not the one that is requested. With this interpretation, the global-context-item option in fn-transform-82e should not be ignored in the case where a 3.0 processor is invoked.

michaelhkay commented 4 years ago

I have fixed this by allowing alternative results for fn-transform-82e

michaelhkay commented 3 years ago

Since no-one has objected, I am closing the issue.