Subject: [xsl] count() gives strange result From: <simon_handley@xxxxxxxxxxx> Date: Fri, 17 Sep 2004 16:22:54 -0700 |
Thanks to everyone who answered my previous, not real smart, question. I have another question that I have a funny feeling is equally dumb, but I've been banging my head against it with no luck so far.... The following template is very simple: it takes as input a node set, each node is an element with a numeric attribute @numChanges. The template returns the sum of these attributes: <xsl:template name="totalNumChanges"> <xsl:param name="children"/> <xsl:message>tnc <xsl:copy-of select="$children"/> count=<xsl:value-of select="count($children)"/> </xsl:message> <xsl:choose> <xsl:when test="not($children)"> <xsl:message>returning <xsl:value-of select="0"/> </xsl:message> <xsl:value-of select="0"/> </xsl:when> <xsl:otherwise> <xsl:variable name="tail"> <xsl:call-template name="totalNumChanges"> <xsl:with-param name="children" select="$children[position() != 1]"/> </xsl:call-template> </xsl:variable> <xsl:message>returning <xsl:value-of select="$tail + $children[1]/@numChanges"/> </xsl:message> <xsl:value-of select="$tail + $children[1]/@numChanges"/> </xsl:otherwise> </xsl:choose> </xsl:template> I then run it (Saxon 8.0) from this: <xsl:template match="/"> <xsl:variable name="tmp"> <wrapper numChanges="1"/> <wrapper numChanges="2"/> <wrapper numChanges="3"/> </xsl:variable> <xsl:call-template name="totalNumChanges"> <xsl:with-param name="children" select="$tmp/wrapper"/> </xsl:call-template> </xsl:template> and get the following messages: tnc <wrapper numChanges="1"/><wrapper numChanges="2"/><wrapper numChanges="3"/> count=3 tnc <wrapper numChanges="2"/><wrapper numChanges="3"/> count=3 tnc <wrapper numChanges="3"/> count=2 tnc count=0 returning 0 returning 3 returning 5 returning 6 So, the template works as expected, but the count()s are wrong (3, 3, 2, 0 rather than 3, 2, 1, 0). It seems like I must be missing something really obvious.... Thanks! Simon ------------------------------------------------------------------------ Simon Handley Agilent Technologies 5301 Stevens Creek Boulevard, MS WH Santa Clara, California 95051-7295 simon_handley@xxxxxxxxxxx 408-553-7122 (w) 408-553-7269 (fax) --+------------------------------------------------------------------ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/ or e-mail: <mailto:xsl-list-unsubscribe@xxxxxxxxxxxxxxxxxxxxxx> --+--
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Extracting a comment bloc, Dimtre Novatchev | Thread | Re: [xsl] count() gives strange res, George Cristian Bina |
Re: [xsl] Extracting a comment bloc, George Cristian Bina | Date | Re: [xsl] count() gives strange res, George Cristian Bina |
Month |