xsl-list
[Top] [All Lists]

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

2002-11-07 17:37:38
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