Subject: [xsl] Re: Do something if no items in for-each meet criteria From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Fri, 12 Sep 2003 06:58:21 +0200 |
"Peter Hollingsworth" <peter@xxxxxxxxxxxxxxxxx> wrote in message news:5.2.1.1.0.20030911155720.027fe380@xxxxxxxxxxxxxxxxxxxxxxxxxxxx > I'm trying to > 1) go through a set of nodes > 2) if any matches my criteria, display it > 3) if NONE matches my criteria, display a message like "None" > > For example, imagine this xml listing some animals: > <animal> > <type>snake</type> > <furry>false</furry> > </animal> > <animal> > <type>fish</type> > <furry>false</furry> > </animal> > > and this XSL that lists all the ones with fur: > The following animals are furry:<br/> > <xsl:for-each select="animal"> > <xsl:if test="furry = 'true'"> > <xsl:value-of select="type"/><br/> > </xsl:if> > </xsl:for-each> > [if no animals were furry, print "None are furry"] <---how can I do this? > > Any way I can accomplish what I'm trying to do on the last line above? Yes. When the test is so simple (as in your case), one can simply have: <xsl:variable name="vFurry" select="animal[fury = 'true']"/> <xsl:for-each select="$vFurry"> <xsl:value-of select="type"/><br/> </xsl:for-each> <xsl:if test="not($vFurry)">None are furry </xsl:if> In case the selection criteria is more complex and cannot be specified in a single XPath expression (try to find such case with XPath2 and XSLT2) then you have to create an RTF with the results and test its contents. I would recommend using the "some-true" template of FXSL, which does this for you conveniently. ===== Cheers, Dimitre Novatchev. http://fxsl.sourceforge.net/ -- the home of FXSL XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Do something if no items , Michael Kay | Thread | RE: [xsl] Do something if no items , Michael Kay |
[xsl] Storing and retrieving html t, Peter Hollingsworth | Date | [xsl] Re: dynamically change modes , Dimitre Novatchev |
Month |