Use the preceding-sibling axis.
For this kind of problem you often need to use generate-id() as well, to
compare node identities. For example you can define a key
<xsl:key name="g" select="item"
use="generate-id(preceding-sibling::group[1])"/>
which will enable you to find all the items in a group as:
<xsl:template match="group">
<xsl:for-each select="key('g', generate-id())">
....
Michael Kay
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
Mark Ivs
Sent: 30 April 2003 01:00
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] find previous node at the same level
Hello,
Here's how my xml looks.
<home>
<group>group 1</group>
<item>item one</item>
<item>item two</item>
<item>item three</item>
<item>item four</item>
<group>group 2</group>
<item>item one</item>
<item>item two</item>
<item>item three</item>
</home>
<xsl:apply-templates select="item">
if previous node is group... then do blah
else if previous node is item.... then do blah
</xsl:apply-templates>
So when I am in item template how do I find what the
previous node is ? (In my example it will be the item
one nodes)
Your help will be appreciated. Thanks.
Mark
__________________________________
Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo. http://search.yahoo.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list