Re: [xsl] Multiple level filtering with XSLT

Subject: Re: [xsl] Multiple level filtering with XSLT
From: David Carlisle <davidc@xxxxxxxxx>
Date: Thu, 22 Jul 2004 16:41:30 +0100
change
            <xsl:when test="local-name()='c'">
                <xsl:if test="not(@x=1)">

to

            <xsl:when test="local-name()='c'">
                <xsl:if test="not(@x=1) and (not (d) or d[@x&lt;7])">

however why match on * and then have a big xsl:choose switch, especially
one using local-name() It's almost always better to use
 <xsl:when test="self::c">
rather than
 <xsl:when test="local-name()='c'">

and in this case you could just use template matching which would make
it much easier to swap new filters in or out:

 <xsl:template match="*">
   <xsl:copy>
                    <xsl:copy-of select="@*"/>
                    <xsl:apply-templates/>
                </xsl:copy>
 </xsl:template>

<!-- empty templates for filters -->

<xsl:template match="c[@x=1 or not(*[not(self::d[@x&gt;=7)] ])]"/>

<xsl:template match="d[@x&gt;=7]"/>


David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

Current Thread