Re: [xsl] not()'ing a false variable, xalan 2.4.D1

Subject: Re: [xsl] not()'ing a false variable, xalan 2.4.D1
From: Greg Faron <gfaron@xxxxxxxxxxxxxxxxxx>
Date: Thu, 07 Nov 2002 17:37:38 -0700
At 05:17 PM 11/7/2002, you wrote:
  I am trying to make a variable that is either true or false, and
later doing an <xsl:if> operation with the condition being not'd, but
for some reason xalan 2.4.D1 is saying that a not("variable assigned
as false") is not true.

Is this a bug or am I doing something wrong?

Test case:

<?xml version="1.0"?>
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  version="1.0">

<xsl:output method="xml"/>

<xsl:template match="/">

    <!-- make a false variable entitled 'false-variable' -->
    <xsl:variable name="false-variable">
      <xsl:value-of select="false()"/>
    </xsl:variable>

Stop here. This is where you are confused. If you were to instead say
<xsl:variable name="false-variable" select="false()"/>, it would work exactly as you would expect it to. The problem is that you are creating a result-tree-fragment consisting of the text node "false". That is what happens when you say <xsl:value-of select="false()" />.


Later, you test if the variable has any content (when test="$false-variable"), which it does: the string "false".

Solution: Use the 'select' attribute of xsl:variable when you want a boolean result, not a string result.


Greg Faron Integre Technical Publishing Co.



XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list


Current Thread