[xsl] Sorting on the SUM aggregate

Subject: [xsl] Sorting on the SUM aggregate
From: "David Petersen" <david@xxxxxxxxxxxxxx>
Date: Thu, 3 Apr 2003 16:57:19 -0600
I have the following XML document and XSL to which have been the subject
of another question on this list. The XSL creates a presentation that
shows the totals for each BrochureName.  The problem with the code is
that it sorts across the whole document so when you look at the
presentation, it appears that it isn't sorted if one of the aggregate
fields are selected to sort on.  Does anyone know of a way to sort on
the result of the Aggregate SUM?

<xsl:for-each select="RECORD[count(. |
key('listofbrochures',BrochureName)[1]) = 1]">
		<xsl:sort select="*[local-name()=$sortfield]"
order="{$sortorder}" data-type="{$datatype}" />
		<xsl:variable name="currentGroup"
select="key('listofbrochures', BrochureName)" />
		<tr>
			<xsl:attribute name="bgcolor">
				<xsl:choose>
					<xsl:when test="(position() mod
2) = 0">#d3d3d3</xsl:when>
	
<xsl:otherwise>#ffffff</xsl:otherwise>
				</xsl:choose>
			</xsl:attribute>

			<td nowrap="true" class="dataValue">
						<xsl:value-of
select="BrochureName"/>
			</td>
			<td align="center" class="dataValue">
				<xsl:value-of
select="format-number(BrochureID,'#,##0')"/>
			</td>
			<td align="right" class="dataValue">
				<xsl:value-of
select="format-number(sum($currentGroup/ProjectedUnits),'#,##0')"/>
			</td>
			<td align="right" class="dataValue">
				<xsl:value-of
select="format-number(sum($currentGroup/SalesRepProjectedUnits),'#,##0')
"/>
			</td>
			<td align="right" class="dataValue">
				<xsl:value-of
select="format-number(sum($currentGroup/ProjectedForActual),'#,##0')"/>
			</td>
			<td align="right" class="dataValue">
				<xsl:value-of
select="format-number(sum($currentGroup/SalesRepProjectedForActual),'#,#
#0')"/>
			</td>
			<td align="right" class="dataValue">
				<xsl:value-of
select="format-number(sum($currentGroup/ActualUnits),'#,##0')"/>
			</td>
			<td align="right" class="dataValue">
				<xsl:value-of
select="format-number(sum($currentGroup/RemainingProjected),'#,##0')"/>
			</td>
		</tr>
</xsl:for-each>

<?xml version="1.0"?>
<DATA>
	<RECORD>
		<SalesPersonID>FB02</SalesPersonID>
		<SalesRepFullName>Salesman 1</SalesRepFullName>
		<BrochureID>165</BrochureID>
		<BrochureName>BROCHURE 1</BrochureName>
		<GroupName>DistRep</GroupName>
		<SeasonName>Spring 2003</SeasonName>
		<ProjectedUnits>500</ProjectedUnits>
		<SalesRepProjectedUnits>300</SalesRepProjectedUnits>
		<ProjectedForActual>0</ProjectedForActual>
	
<SalesRepProjectedForActual>0</SalesRepProjectedForActual>
		<ActualUnits>0</ActualUnits>
		<RemainingProjected>500</RemainingProjected>
	</RECORD>
	<RECORD>
		<SalesPersonID>FB02</SalesPersonID>
		<SalesRepFullName>Salesman 2</SalesRepFullName>
		<BrochureID>165</BrochureID>
		<BrochureName>BROCHURE 1</BrochureName>
		<GroupName>DistRep</GroupName>
		<SeasonName>Spring 2003</SeasonName>
		<ProjectedUnits>500</ProjectedUnits>
		<SalesRepProjectedUnits>300</SalesRepProjectedUnits>
		<ProjectedForActual>0</ProjectedForActual>
	
<SalesRepProjectedForActual>0</SalesRepProjectedForActual>
		<ActualUnits>0</ActualUnits>
		<RemainingProjected>500</RemainingProjected>
	</RECORD>
	<RECORD>
		<SalesPersonID>FB02</SalesPersonID>
		<SalesRepFullName>Salesman 1</SalesRepFullName>
		<BrochureID>165</BrochureID>
		<BrochureName>BROCHURE 2</BrochureName>
		<GroupName>DistRep</GroupName>
		<SeasonName>Spring 2003</SeasonName>
		<ProjectedUnits>500</ProjectedUnits>
		<SalesRepProjectedUnits>300</SalesRepProjectedUnits>
		<ProjectedForActual>0</ProjectedForActual>
	
<SalesRepProjectedForActual>0</SalesRepProjectedForActual>
		<ActualUnits>0</ActualUnits>
		<RemainingProjected>500</RemainingProjected>
	</RECORD>
	<RECORD>
		<SalesPersonID>FB02</SalesPersonID>
		<SalesRepFullName>Salesman 2</SalesRepFullName>
		<BrochureID>165</BrochureID>
		<BrochureName>BROCHURE 2</BrochureName>
		<GroupName>DistRep</GroupName>
		<SeasonName>Spring 2003</SeasonName>
		<ProjectedUnits>500</ProjectedUnits>
		<SalesRepProjectedUnits>300</SalesRepProjectedUnits>
		<ProjectedForActual>0</ProjectedForActual>
	
<SalesRepProjectedForActual>0</SalesRepProjectedForActual>
		<ActualUnits>0</ActualUnits>
		<RemainingProjected>500</RemainingProjected>
	</RECORD>
</DATA>




 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread