Subject: RE: [xsl] Newbie needs help with sorting a filtered list From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Mon, 29 Jan 2007 09:18:29 -0000 |
> This gives me the correct items, but not in alphabetical order: > > <xsl:param name="param1"/> > <xsl:param name="param2"/> > > <xsl:template match="catalog/entry"> > <xsl:if test="category[@type=$param1] and > category[@subcat=$param2]"> > <xsl:for-each select="word"> > <xsl:sort/> > <xsl:apply-templates/><br/> > </xsl:for-each> > </xsl:if> > </xsl:template> > Each entry only contains one word, so there's not much point sorting the words within an entry. > > This one gives me an alphabetized list, but of all the items, > not just the ones that match the params: > > <xsl:template match="catalog"> > <xsl:if test="entry/category[@type=$param1] and > entry/category[@subcat=$param2]"> > <xsl:for-each select="entry/word"> > <xsl:sort/> > <xsl:apply-templates/><br/> > </xsl:for-each> > </xsl:if> > </xsl:template> > That's because you're first testing if a qualifying entry exists, and if it does, you're processing all the entries whether they qualify or not. You want: <xsl:template match="catalog"> <xsl:for-each select="entry[category[@type=$param1 and @subcat=$param2]]/word"> <xsl:sort/> <xsl:apply-templates/><br/> </xsl:for-each> </xsl:template> Michael Kay http://www.saxonica.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Newbie needs help with so, James A. Robinson | Thread | Re: [xsl] Newbie needs help with so, G. Ken Holman |
Re: [xsl] xinclude in xslt 2.0 now , Colin Paul Adams | Date | [xsl] IDE, Antony Quinn |
Month |