Subject: Re: [xsl] Count() elements in range From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> Date: Thu, 16 Oct 2003 15:43:10 -0400 |
Cheers, Wendell
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>
====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Count() elements in range, Chris . Pearson | Thread | Re: [xsl] Count() elements in range, M. David Peterson |
RE: [xsl] Entity reference problem, Wendell Piez | Date | Re: [xsl] Entity reference problem, J.Pietschmann |
Month |