GNOME Bugzilla – Bug 340684
Incorrect regression test results due to whitespace-stripping bug
Last modified: 2021-07-05 10:59:32 UTC
(this comes straight from my private notes, so sorry for the verbosity; actually it's only here to have a bug reference for the ChangeLog) The following regression test results are incorrect. - Regression test result "exslt/common/node-set.5.out" is incorrect due to incorrect preprocessing of adjacent text-nodes in the stylehsheet document. Checked with Saxon 8.1.1 and Xerces-J. The whitespace after the comment-node was removed; this was incorrect, since first the comment-node is removed, then adjacent text-nodes are merged, and then whitespace is removed. So the whitespace after the comment-node won't be stripped. Relevant snippet from the stylesheet ""exslt/common/node-set.5.xsl": ----- </xsl:variable> a <!-- <xsl:copy-of select="pidgeon"/> --> </xsl:for-each> ---- - Regression test result "exslt/functions/function.6.out" is incorrect; (same whitespace-stripping issue as for "exslt/common/node-set.5.out"). Checked with Saxon 8.1.1 and Xerces-J. Relevant snippet from "exslt/functions/function.6.xsl": ----- </false>; <!-- note, this should return false because func:function is not an INSTRUCTION --> <false> ----- - Regression test result "exslt/sets/difference.1.out" is incorrect; (same whitespace-stripping issue as for "exslt/common/node-set.5.out"). Checked with Saxon 8.1.1 and Xerces-J. Relevant snippet from "exslt/sets/difference.1.xsl": ----- </xsl:for-each> <!-- test intersection and difference on empty sets --> Containing i: <xsl:for-each -----
Hmm, I think if we really change the whitespace handling of the processor, it will break a vast amount of transformation results. Maybe we should think about preserving the old behaviour here and find a way of compiling the stylesheet in two different modes: 1) with the broken old whitespace-stripping 2) with a stricter whitespace-stripping: I even think we cannot implement the whitespace semantic here to the full extend of the spec: the processor didn't handle xml:space, so supporting xml:space="preserve" will lead to stylesheet additional errors - breaking existent stylesheets. Example: <xsl:choose xml:space="preserve"> <xsl:when test="true()"> <foo/> </xsl:when> </xsl:choose> This will result in a compilation error, since no text-nodes are allowed in the content of xsl:choose. XSLT 2.0 has defined special exceptions for elements like xsl:choose: the processor must strip whitespace here even if xml:space="preserve" was set. Going the XSLT 2.0 way will keep existing stylesheets alive and be XSLT 2.0 compatible.
GNOME is going to shut down bugzilla.gnome.org in favor of gitlab.gnome.org. As part of that, we are mass-closing older open tickets in bugzilla.gnome.org which have not seen updates for a longer time (resources are unfortunately quite limited so not every ticket can get handled). If you can still reproduce the situation described in this ticket in a recent and supported software version, then please follow https://wiki.gnome.org/GettingInTouch/BugReportingGuidelines and create a new ticket at https://gitlab.gnome.org/GNOME/libxslt/-/issues/ Thank you for your understanding and your help.