RE: [xsl] Grouping in XSL

Subject: RE: [xsl] Grouping in XSL
From: "Amuchastegui, Maria" <Maria.Amuchastegui@xxxxxxxxxxx>
Date: Mon, 26 Jan 2004 14:48:51 -0500
Correction:

<xsl:template match="//cmsParent/node/actv/dimensions/*[name() =
'comp']/@prodLongDesc">
<tr>
<td><xsl:value-of select="."/></td>
<td><xsl:value-of select="../../mthCost"/></td>
<td><xsl:value-of select="../../ytdCost"/></td>
</tr>
</xsl:template>

-----Original Message-----
From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Amuchastegui,
Maria
Sent: January 26, 2004 2:23 PM
To: 'xsl-list@xxxxxxxxxxxxxxxxxxxxxx'
Subject: RE: [xsl] Grouping in XSL


Try this. - Maria


<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
	<xsl:output method="html" encoding="ISO-8859-1" indent="yes"/>
	<xsl:template match="/">
		<html>
			<head>
				<title/>
			</head>
			<body>
				<h1>actvShortDesc:&#160;<xsl:value-of
select="/cmsParent/node/actv/@actvLongDesc"/>
				</h1>
				<xsl:apply-templates
select="/cmsParent/node/actv/dimensions[1]/*"/>
			</body>
		</html>
	</xsl:template>
	<xsl:template match="/cmsParent/node/actv/dimensions[1]/*[(name() !=
'mthCost') and (name() != 'ytdCost')]">
		<table border="1">
			<tbody>
				<tr>
					<th>
						<xsl:choose>
							<xsl:when
test="name() = 'prod'">Product</xsl:when>
							<xsl:when
test="name() = 'cust'">Customer</xsl:when>
							<xsl:when
test="name() = 'chan'">Channel</xsl:when>
							<xsl:when
test="name() = 'comp'">Company</xsl:when>
						</xsl:choose>
					</th>
					<th>Current Month</th>
					<th>Year to Date</th>
				</tr>
				<xsl:choose>
					<xsl:when
test="/cmsParent/node/actv/dimensions/*/@prodLongDesc =
following-sibling::*/@prodLongDesc">
						<tr>
							<td>
	
<xsl:value-of select="@prodLongDesc"/>
							</td>
							<td>
	
<xsl:value-of select="sum(//mthCost)"/>
							</td>
							<td>
	
<xsl:value-of select="sum(//ytdCost)"/>
							</td>
						</tr>
					</xsl:when>
					<xsl:otherwise>
						<xsl:apply-templates
select="//cmsParent/node/actv/dimensions/*[name() = 'comp']/@prodLongDesc"/>
					</xsl:otherwise>
				</xsl:choose>
			</tbody>
		</table>
		<br/>
		<br/>
	</xsl:template>
	<xsl:template match="//cmsParent/node/actv/dimensions/*[name() =
'comp']/@prodLongDesc">
		<tr>
			<td>
				<xsl:value-of select="."/>
			</td>
			<td>
				<xsl:value-of
select="/cmsParent/node/actv/dimensions/mthCost"/>
			</td>
			<td>
				<xsl:value-of
select="/cmsParent/node/actv/dimensions/ytdCost"/>
			</td>
		</tr>
	</xsl:template>
	<xsl:template match="mthCost | ytdCost"/>
</xsl:stylesheet>




-----Original Message-----
From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of
GORDIST@xxxxxxxxxxxxxx
Sent: January 26, 2004 10:41 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: [xsl] Grouping in XSL


I have only been using XSL for the past few months and am having trouble
trying to group certain elements or attributes together while at the same
time summing up their values.  Here is a sample of the XML that we are
using:

<cmsParent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
parentShortDesc="FIN_INFO_SERVICES" parentLongDesc="Financial Information
Services">
    <node nodeShortDesc="001010" nodeLongDesc="Annual Meeting" partitionKey
="CST200304200304A001ECORP" costDom="ECORP" from_dt="2003-04-01" adjdate=""
adjindic="N">
       <actv actvShortDesc="PERFORM STRAT INIT" actvLongDesc="Perform
Strategic Initiatives">
          <dimensions>
            <prod prodShortDesc="xyz" prodLongDesc="XYZ Corporation" />
            <cust prodShortDesc="abc" prodLongDesc="ABC Corporation" />
            <chan prodShortDesc="zzz" prodLongDesc="ZZZ Corporation" />
            <comp prodShortDesc="003" prodLongDesc="Nationwide Property" />
            <mthCost>500.00</mthCost>
            <ytdCost>1000.00</ytdCost>
          </dimensions>
          <dimensions>
            <prod prodShortDesc="xyz" prodLongDesc="XYZ Corporation" />
            <cust prodShortDesc="abc" prodLongDesc="ABC Corporation" />
            <chan prodShortDesc="zzz" prodLongDesc="ZZZ Corporation" />
            <comp prodShortDesc="002" prodLongDesc="Nationwide Life" />
            <mthCost>1000.00</mthCost>
            <ytdCost>2000.00</ytdCost>
          </dimensions>
       </actv>
    </node>
</cmsParent>

The output needs to look like this:

actvShortDesc:          Perform Strategic Initiatives

Product                 Current Month           Year to Date
XYZ Corporation   1500.00                 3000.00

Customer          Current Month           Year to Date
ABC Corporation   1500.00                 3000.00

Channel           Current Month           Year to Date
ZZZ Corporation   1500.00                 3000.00

Company           Current Month           Year to Date
Nationwide Property     500.00                  1000.00
Nationwide Life         1000.00                 2000.00

Any help would be much appreciated on this topic.

Thanks, Todd Gordish



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

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

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


Current Thread