This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: selecting then conditional test
- To: "Jason Thomas" <jason dot thomas at plexus dot com>
- Subject: Re: selecting then conditional test
- From: Jeni Tennison <mail at jenitennison dot com>
- Date: Mon, 09 Oct 2000 15:05:35 +0100
- Cc: <XSL-List at mulberrytech dot com>
- Reply-To: xsl-list at mulberrytech dot com
Jason,
>My xsl is as follows:
>
><xsl:template match="alljobs">
><xsl:for-each select="job/item1[not(.=following::job/item1)]">
> <xsl:sort/>
> <xsl:if test="ancestor::job/item1!='N/A'">
> <xsl:value-of select="."/>
> </xsl:if>
></xsl:for-each>
>
>I've also tried: <xsl:if test="//item1!='N/A'">
>
>Unfortunately these don't work. I eliminate the duplicates and sort it but
>the if statement doesn't work. What am I doing wrong? Thanks for your help!
The second (//item1 != 'N/A') doesn't work because you're testing there
whether *any* item1 in the document doesn't equal 'N/A', which is always true.
The first does work, at least in Saxon, although you could simplify things
by only selecting those item1s that don't equal N/A in the first place:
<xsl:for-each select="job/item1[not(. = 'N/A' or . = following::job/item1)]">
<xsl:sort/>
<xsl:value-of select="."/>
</xsl:for-each>
This produces only 'one' and 'two' with both Saxon and Xalan (although with
no carriage return between them - you have to add that yourself using
xsl:text).
I hope that helps,
Jeni
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list