[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Count() elements in range
Figured it out...maybe it can help someone else! <xsl:template match="/root/element"> <xsl:choose> <xsl:when test="(following-sibling::element[1][child::flag]) or (count(following-sibling::element) = 0)"> <!-- only call when it's the last element in a series--> <xsl:call-template name="countFlags"> <xsl:with-param name="nodeList" select="preceding-sibling::element" /> <xsl:with-param name="followingFlags" select ="count(following-sibling::element[flag])"/> </xsl:call-template> </xsl:when> <xsl:otherwise /> </xsl:choose> </xsl:template> <xsl:template name="countFlags"> <xsl:param name="nodeList"/> <xsl:param name="followingFlags"/> <xsl:value-of select="1 + count ($nodeList[count(following-sibling::element[flag]) = $followingFlags])"/> </xsl:template> gives output: Element A1: 1 Element B4: 4 Element C2: 2 Element D3: 3 <root> <element number="A1"><!--start a series of 1 --> <flag/> </element><!-- only 1 in series, so count is only 1 --> <element number="B1"><!-- start a series of 4 --> <flag/> </element> <element number="B2"/> <element number="B3"/> <element number="B4"/><!-- count the previous 3 elements --> <element number="C1"><!-- start a series of 2 --> <flag/> </element> <element number="C2"/><!--count the previous 1 element --> <element number="D1"><!-- start a series of 3 --> <flag/> </element> <element number="D2" /> <element number="D3" /><!-- count the previous 2 elements --> </root> Chris Pearson Agilisys Automotive 248.697.3443 Chris.Pearson@xxxxxxxxxxxx XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|