[xsl] Why does my XSLT produce a Warning message with never-executed code that divides a blank by 10?

Subject: [xsl] Why does my XSLT produce a Warning message with never-executed code that divides a blank by 10?
From: "Roger L Costello costello@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sun, 31 Mar 2024 07:56:32 -0000
Hi Folks,

I have a program that generates this XSLT code:

<xsl:template match="/">
        <xsl:variable name="test" select="'    '" as="xs:string"/>
        <xsl:value-of select="
            if (normalize-space($test) eq '') then ()
            else xs:integer($test) div 10"/>
</xsl:template>

When I execute that XSLT code, I get this warning message:

Warning: SXWN9000  Evaluation will always throw a dynamic error: Cannot
convert zero-length string to an integer

Why am I getting that Warning message? This:

xs:integer($test) div 10

will never be executed because of this:

if (normalize-space($test) eq '') then ()

So I don't understand why I am getting the Warning message.

How can the XSLT code be written so that, when executed, it doesn't produce a
Warning message? Note: recall that I have a program that generates the XSLT
code. Sometimes the program generates $test with a blank value, other times
the program generates $test with a numeric value. The generated XSLT code
needs to work with both cases.

/Roger

Current Thread