This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: XSL exclusion of elements
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Tue, 18 Jun 2002 09:09:04 +0100
- Subject: RE: [xsl] XSL exclusion of elements
- Reply-to: xsl-list at lists dot mulberrytech dot com
>
> 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@ntlworld.com
work: Michael.Kay@softwareag.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list