Subject: Re: [xsl] Just the first 'x' elements within a for-each From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Tue, 18 Mar 2003 14:01:20 +0000 |
Hi Si, > The following displays all the headlines rather than just the first 2: > > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:output method="html"/> > <xsl:template match="/"> > <xsl:for-each select="/package/stories/story/properties[position() <= 2]"> > <!-- We only want the first 2 headline --> > <br/> > <xsl:value-of select="headline"/> > </xsl:for-each> > </xsl:template> > </xsl:stylesheet> Ah, right -- the position that's used in the predicate here applies to the position of the <properties> element within its <story> parent, rather than the position of the <properties> element amongst all the <properties> elements (within <story> elements, within...) in the document. You just need to add some brackets: <xsl:for-each select="(/package/stories/story/properties)[position() <= 2]"> ... </xsl:for-each> this will collect up the <properties> elements into a node set and the position of a particular <properties> element will be judged based on its position, in document order, amongst the other nodes in that node set. Or (depending on the structure of the XML) you might be able to move the predicate so that it's getting the position of the right thing. For example, perhaps you want the <properties> children of the first two <story> elements: <xsl:for-each select="/package/stories/story[position() <= 2]/properties"> ... </xsl:for-each> 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] Just the first 'x' elemen, Simon . Fairey | Thread | Re: [xsl] Just the first 'x' elemen, Simon . Fairey |
Re: [xsl] Just the first 'x' elemen, Simon . Fairey | Date | Re: [xsl] Just the first 'x' elemen, Simon . Fairey |
Month |