[Home] [By Thread] [By Date] [Recent Entries]
Hi John,
At 02:56 PM 7/9/2004, you wrote: I'm trying to find the context node's position relative to a list of identically named nodes. For example, given the following XML: <xsl:template match="BROTHER"> <xsl:value-of select="count(BROTHER/preceding-sibling::*)" /> <xsl:value-of select="count(preceding-sibling::node()[.='BROTHER'])" /> </xsl:template> Try "count(preceding-sibling::BROTHER) + 1" The way XPath works is that a relative path (one not starting with '/') starts from the context node -- in a template matching "BROTHER" the context node will be each BROTHER picked up for processing in turn. Starting at the context node, count the preceding siblings named BROTHER with preceding-sibling::BROTHER, add one, and that's the number you're after. Alternatively, use the <xsl:number> instruction as a full-featured alternative that will let you count all kinds of things (such as brothers and sisters but not friends), get multi-leveled numbering (like 2.3.4), give the numbers special formatting, etc. In this case, plain <xsl:number/> would get you exactly what you wanted with its various attributes ('count', 'level', 'format' etc.) left to their defaults. Cheers, Wendell
|

Cart



