Support #5965
closedstring-join implementation always uses XPath 3.1 implementation
0%
Description
Related to issue [[https://saxonica.plan.io/issues/2738]], it seems the situation hasn't effectively changed. Since that issue is closed a while now, I raise a new issue.
Essentially the implementation for string-join() should reject any non-string item arguments with a XPTY0004 when XPathCompiler has set the language version to 2.0. Currently I'm using Saxon 9.9 (upgrading to 12.1 soon). Looking at XPath20FunctionSet, it uses the same StringJoin.class as the XPath31FunctionSet. Was the 2.0-specific implementation dropped again in 9.9?
Kind regards,
Johan Walters
Related issues
Updated by Johan Walters over 1 year ago
- Copied from Support #2738: string-join implementation always uses XPath 3.1 implementation added
Updated by Michael Kay over 1 year ago
We made a conscious decision to drop the requirement for 100% XPath 2.0 conformance in cases where the only difference would be to raise an error for run-time conditions that XPath 3.1 allows but XPath 2.0 does not. This is documented at
https://www.saxonica.com/documentation12/index.html#!conformance/xpath20
The example of string-join() accepting non-string arguments is given as a specific example.
We felt that the only adverse impact would be on people (like yourself) running conformance tests. Sorry for the inconvenience.
Updated by Johan Walters over 1 year ago
That is a fair decision. And the inconvenience is indeed limited to a failing conformance test. I got confused by the comments on the other ticket, where there was mention of a patch on 9.7 to have a 2nd string-join implementation, and where the 9.8 function sets were also presented as a 'solution'. Therefore I thought an exception was made for string-join. But as said, the current situation is fine.
Please register to edit this issue