Thanks for your help. I used the work around. I think the workaround is
more intuitive; but I had to declare the variables before the if condition,
since the scope of the variable seemed to be limited to the if block.

  <xsl:variable name="StartTime"/>
  <xsl:variable name="EndTime"/>
  <xsl:if test="$TimeOption='SlidingTimes' or $TimeOption='SpecificTimes'">
    <xsl:variable name="StartTime" select="substring-before($TimeValues,
';')"/>
  </xsl:if>
  <xsl:if test="$TimeOption='SlidingTimes' or $TimeOption='SpecificTimes'">
    <xsl:variable name="EndTime" select="substring-after($TimeValues,
';')"/>
  </xsl:if>


                                                                                
                                                 
                      [EMAIL PROTECTED]                                         
                                                
                      bm.com                   To:       [EMAIL PROTECTED]      
                                      
                                               cc:       [EMAIL PROTECTED]      
                                                  
                      05/06/2003 12:22         Subject:  Re: test attribute 
null evaluation doesn't work                         
                      PM                                                        
                                                 
                                                                                
                                                 
                                                                                
                                                 




>This code evaluates to true when StartTime is not set.
>   <xsl:when test="$StartTime">
>I want it to evaluate to false. It worked fine in xalan-1.

And the variable was set by....
<xsl:variable name="StartTime">
    <xsl:if test="...">
      <xsl:value-of select="substring-before($TimeValues, ';')"/>
    </xsl:if>
</xsl:variable>

This probably represents a required tightening-up between 1.x and 2.x.
As you've structured it, $StartTime contains a result tree fragment
(RTF), which you should read about in a good XSLT book. The RTF is
never totally empty.

Fortunately, your case has the easy workaround of just inverting the
structure:
<xsl:if test="...">
   <xsl:variable name="StartTime" select="..."/>
</xsl:if>
For more complicated situations, you could have a flag value that is
outside the range of valid times, or you could have a second boolean
variable $StartTimeSet to use in the xsl:when.
.................David Marston




Reply via email to