|
Subject: RE: [xsl] position()=last() always 1 problem From: Donal Regan <donal_regan10@xxxxxxxxxxx> Date: Fri, 16 Jan 2004 08:46:46 +0000 (GMT) |
I got it working by adding an element <summed> before
the <xsl:for-each select="ratios"> and using
<xsl:apply-templates
select="msxsl:node-set($multiSum)/summed" />
and the following template
<xsl:template match="summed">
<xsl:for-each select="number">
<xsl:sort data-type="number" order="ascending"/>
<test><xsl:value-of select="."/></test>
<xsl:if test="position()=last()">
<max><xsl:value-of select="."/></max>
</xsl:if>
</xsl:for-each>
</xsl:template>
--- Josh Canfield <josh.canfield@xxxxxxxxxxxx> wrote:
> If you know that the node you want is the first one,
> just pass it to the apply-templates.
> Change:
> <xsl:apply-templates
> select="msxsl:node-set($sortedNumbers)/inorder" />
> To:
> <xsl:apply-templates
> select="msxsl:node-set($sortedNumbers)/inorder[1]"
> />
>
> Josh
>
> -----Original Message-----
> From: Donal Regan [mailto:donal_regan10@xxxxxxxxxxx]
> Sent: Thursday, January 15, 2004 10:47 PM
> To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] position()=last() always 1 problem
>
>
> Hello,
>
> I want to add some values and then find the maximum
> result. The addition is fine but then I try to sort
> the results and look at the "last()" one, my output
> is
> just all the sums, rather than the max value.
> Any help would be greatly appreciated.
>
> Donal.
> I have the following XML input
> <data var0='tpop' var1='bpop'>
> <ratios>
> <teensRatio>0.2</teensRatio>
> <babiesRatio>0.3</babiesRatio>
> <infantsRatio>0.1</infantsRatio>
> </ratios>
> <ratios>
> <teensRatio>0.1</teensRatio>
> <babiesRatio>0.1</babiesRatio>
> <infantsRatio>0.05</infantsRatio>
> </ratios>
> <ratios>
> <teensRatio>0.2</teensRatio>
> <babiesRatio>0.15</babiesRatio>
> <infantsRatio>0.1</infantsRatio>
> </ratios>
> etc;
> </data>
>
> my output is
> <max>0.5</max>
> <max>0.2</max>
> <max>0.35</max>
>
> I would like
>
> <max>0.5</max>
>
> This the stylesheet.
>
> <xsl:template match="data">
> <xsl:variable name="multiSum">
> <xsl:for-each select="ratios">
> <xsl:variable name="r0">
> <xsl:choose>
> <xsl:when test="$var0='tpop'">
> <xsl:value-of select="teensRatio"/>
> </xsl:when>
> <xsl:when test="$var0='bpop'">
> <xsl:value-of select="babiesRatio"/>
> </xsl:when>
> <xsl:when test="$var0='ipop'">
> <xsl:value-of select="infantsRatio"/>
> </xsl:when>
> </xsl:choose>
> </xsl:variable>
> <xsl:variable name="r1">
> <xsl:choose>
> <xsl:when test="$var1='tpop'">
> <xsl:value-of select="teensRatio"/>
> </xsl:when>
> <xsl:when test="$var1='bpop'">
> <xsl:value-of select="babiesRatio"/>
> </xsl:when>
> <xsl:when test="$var1='ipop'">
> <xsl:value-of select="infantsRatio"/>
> </xsl:when>
> </xsl:choose>
> </xsl:variable>
> <number><xsl:value-of select="$r0 +
> $r1"/></number>
> </xsl:for-each>
> </xsl:variable>
> <xsl:apply-templates
> select="msxsl:node-set($multiSum)/number" />
> </xsl:template>
>
> <xsl:template match="number">
> <xsl:variable name="sortedNumbers">
> <xsl:for-each select=".">
> <xsl:sort data-type="number" order="ascending"/>
> <inorder><xsl:copy-of select="."/></inorder>
> </xsl:for-each>
> </xsl:variable>
> <xsl:apply-templates
> select="msxsl:node-set($sortedNumbers)/inorder" />
> </xsl:template>
>
> <xsl:template match="inorder">
> <xsl:for-each select="number">
> <xsl:if test="position()=last()">
> <max><xsl:value-of select="."/></max>
> </xsl:if>
> </xsl:for-each>
> </xsl:template>
>
>
________________________________________________________________________
> Yahoo! Messenger - Communicate instantly..."Ping"
> your friends today! Download Messenger Now
> http://uk.messenger.yahoo.com/download/index.html
>
> XSL-List info and archive:
> http://www.mulberrytech.com/xsl/xsl-list
>
>
> XSL-List info and archive:
> http://www.mulberrytech.com/xsl/xsl-list
>
________________________________________________________________________
Yahoo! Messenger - Communicate instantly..."Ping"
your friends today! Download Messenger Now
http://uk.messenger.yahoo.com/download/index.html
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] position()=last() always , Josh Canfield | Thread | Re: [xsl] The real harm is in funct, Dimitre Novatchev |
| Re: [xsl] The real harm is in funct, Dimitre Novatchev | Date | RE: [xsl] Passing a Parameter to XS, Riju Abraham |
| Month |