Subject: AW: [xsl] Selection of every second node From: Conny Kreyßel <Conny.Kreyssel@xxxxxxxxxxxxxx> Date: Tue, 21 Aug 2001 15:41:14 +0200 |
Year this works, thanks. But now I have another question. I would now apply a attribute (type="disc") in the "childs" template (<li>) if the on every second parent entry (<node>) like this: <root> <node> <another>1</another> <another>1</another> <another>1</another> </node> <node> <another>2</another> <another>2</another> <another>2</another> </node> <node> <another>3</another> <another>3</another> <another>3</another> </node> <node> <another>4</another> <another>4</another> <another>4</another> </node> </root> <xsl:template match="node"> <ul> <xsl:apply-templates select="another" /> </ul> </xsl:template> <xsl:template match="another"> <li> <xsl:if test="boolean(parent::node()[(position() mod 2) = 0])"> <xsl:attribute name="type">disc</xsl:attribute> </xsl:if> <xsl:value-of select="." /> </li> </xsl:template> The Result should be: <ul> <li>1</li> <li>1</li> <li>1</li> </ul> <ul> <li type="disc">2</li> <li type="disc">2</li> <li type="disc">2</li> </ul> <ul> <li>3</li> <li>3</li> <li>3</li> </ul> <ul> <li type="disc">4</li> <li type="disc">4</li> <li type="disc">4</li> </ul> Can you help me. My template doesnt work - I dont know why? Thank you COnny > -----Ursprüngliche Nachricht----- > Von: Jeni Tennison [mailto:mail@xxxxxxxxxxxxxxxx] > Gesendet: Dienstag, 21. August 2001 14:03 > An: Conny Kreyßel > Cc: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Betreff: Re: [xsl] Selection of every second node > > > Hi Conny, > > > I hope you can help me. How can I make a template that match with > > every second node? > > You need to test the position() of the node element amongst the other > node elements in its parent root element. Fortunately, this is what > the match pattern does by default. You can look at the position() mod > 2 to find the even node elements - if it equals 0 then the node > element is an even node. So try: > > <xsl:template match="node[(position() mod 2) = 0]"> > ... > </xsl:template> > > or: > > <xsl:template match="node[not(position() mod 2)]"> > ... > </xsl:template> > > Alternatively, you could have a template that matched all node > elements, but only apply templates to every second node element, with: > > <xsl:apply-templates select="node[not(position() mod 2)]" /> > > Cheers, > > Jeni > > --- > Jeni Tennison > http://www.jenitennison.com/ > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Constructing X number of , Jarno . Elovirta | Thread | Re: AW: [xsl] Selection of every se, Jeni Tennison |
RE: [xsl] Constructing X number of , Jarno . Elovirta | Date | Re: [xsl] Constructing X number of , Goetz Bock |
Month |