Subject: Re: [xsl] Is a node a first/last child? From: Joerg Pietschmann <joerg.pietschmann@xxxxxx> Date: Thu, 26 Jul 2001 10:07:33 +0200 |
> From: Nadia Karasawa <nadia@xxxxxxxxxxxxxxx> > > I need to know if the current node is the first or the last child of his > parent. In order to clarify the answers you already got: If list of the children is the context list, the most easy, fastest and most readable solutions ought to be to use position(), as in the following example: <xsl:template match="parent_element"> <xsl:for-each select="node()"> <xsl:if test="position()=1"> First node of parent_element </xsl:if> <xsl:if test="position()=last()"> Last node of parent_element </xsl:if> </xsl:for-each> <xsl:template> If you have an arbitrary context, you'll have to stick to the code Dimitre gave you (slightly optimized here :) <xsl:template match="/"> <xsl:for-each select="key('random-key','some key value')> <xsl:if test="preceding-sibling::node()"> First node of parent </xsl:if> <xsl:if test="following-sibling::node()"> Last node of parent </xsl:if> </xsl:for-each> <xsl:template> Note that preceding-sibling::node() also matches whitespace only text nodes, so don't be surprised if the output omit some nodes which are "clearly" the first/last child... Use a xsl:strip-whitespace or replace node() in the code above by * if you deal with elements only. Regards J.Pietschmann -- XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Is a node a first/last ch, Michael Kay | Thread | Re: [xsl] Is a node a first/last ch, Oliver Becker |
Re: [xsl] non-breaking white space , David Carlisle | Date | Re: [xsl] hard core xlt ;-), Elise D. |
Month |