GNOME Bugzilla – Bug 778170
decimal-format and format-number() don't recognize namespaces
Last modified: 2017-02-07 15:13:58 UTC
While checking for possible duplicate names for the decimal-format top-level elements, libxslt performs plain string names comparison, although according to the specification there should be comparison by expanded names, like for templates, variables etc. Steps to reproduce: Create: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:decimal-format xmlns:testns="urn:test:1" name="testns:format" decimal-separator="," /> <xsl:decimal-format xmlns:testns="urn:test:2" name="testns:format" decimal-separator="." /> </xsl:stylesheet> Load and run stylesheet. Actual results: xsltParseStylestyleDecimalFormat: testns:format already exists Expected results: Successful stylesheet run Does this happen every time? Yes
Furthermore, for decimal-format libxslt ignores names expansion completely. Another example: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:decimal-format xmlns:testns="urn:test:1" name="testns:format" decimal-separator="," /> <xsl:template match="/" xmlns:newns="urn:test:1"> <xsl:value-of select="format-number(123, '0,00', 'newns:format')" /> </xsl:template> </xsl:stylesheet> Actual results: format-number() : undeclared decimal format 'newns:format' Expected results: 123,00
Fixed with the following commit: https://git.gnome.org/browse/libxslt/commit/?id=38d4a907541379e7c3381324776fcb9f0c4324ee Thanks for the report.