[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] XSL exclusion of elements


Subject: RE: [xsl] XSL exclusion of elements
From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx>
Date: Tue, 18 Jun 2002 09:09:04 +0100

> 
> I want to do a combination of two items in one select so it 
> only returns the elements that are valid:
> 
>    <xsl:for-each select="Group/Field">
> 
>   
>    <xsl:variable name="val" 
> select="normalize-space(concat('//',DatabaseVariableName))"/>
>      <xsl:if test="( not(DatabaseVariableName='endDate')
>                     and not(DatabaseVariableName='password')
>                     and not(DatabaseVariableName='access')
>                     and not(DatabaseVariableName='status')
>                     and 
> (not(normalize-space(saxon:evaluate($val))=''))
>                     and 
> (not(normalize-space(saxon:evaluate($val))='0'))
>                     and
> (not(normalize-space(saxon:evaluate($val))='0.0'))
>                     and
> (not(normalize-space(saxon:evaluate($val))='0.0'))
>                     and (not(normalize-space(saxon:evaluate($val))=
> '$NON_VALUE'))

I would recommend that you evaluate
normalize-space(saxon:evaluate($val)) once and put it in a variable.
Saxon doesn't eliminate common sub-expressions, and the saxon:evaluate
call is quite expensive; so is the "//xxx" expression that it's
evaluating.


>                     and
> (not(normalize-space(saxon:evaluate($val))='false'))
>                     and
> (not(normalize-space(DatabaseVariableName)='listingTerms'))
>                     and 
> (not(normalize-space(saxon:evaluate($val))='*None Selected*')) )">
> 
> 
> AT THIS POINT: I want to be able to select all elements that 
> are in "Group/Field", excluding out everything in the xsl:if test.
> 
Why don't you use xsl:choose/xsl:when instead of xsl:if, and put the
remaining code in xsl:otherwise?

Michael Kay
Software AG
home: Michael.H.Kay@xxxxxxxxxxxx
work: Michael.Kay@xxxxxxxxxxxxxx 


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



Current Thread