xsl-list
[Top] [All Lists]

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

2002-11-08 02:09:17
The reason I am trying to do this is because I have created a 
template that tests for a certain condition and returns true 
or false, for
example:

  <xsl:template name="boolean-function-template">
    <xsl:param name="node-set"/>
    <xsl:choose>
      <xsl:when test="$node-set/x">
        <xsl:value-of select="false()"/>
      </xsl:when>
      <xsl:when test="$node-set/y">
        <xsl:value-of select="true()"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="false()"/>
      </xsl:otherwise>
     </xsl:choose>
   </xsl:template>


Good: the question is now an intelligent one!

Named templates can only return tree structures, they can never return
boolean values. (For that, you need xsl:function which is introduced in
XSLT 2.0, or something like the EXSLT func:function extension).

I would write the template to return a [tree containing a] string
result, e.g. "true" and "false" or "y" and "n", and then test the string
value that's returned, using e.g. 

<xsl:if test="string($var)='n'">

Michael Kay
Software AG
home: Michael(_dot_)H(_dot_)Kay(_at_)ntlworld(_dot_)com
work: Michael(_dot_)Kay(_at_)softwareag(_dot_)com 


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