[xsl] Grouping and Key Problem

Subject: [xsl] Grouping and Key Problem
From: James Hunt <jamesanthonyhunt@xxxxxxxxx>
Date: Thu, 8 Apr 2004 20:16:37 -0700 (PDT)
I'm having problems with grouping and the use of keys
can anyone tell me what I'm doing wrong here. I have
two records of John on the 12/13/2001 They shouldn't
display separated. How can I make this tranform into
something like this:

12/13/2001
John
  Water Plant
  Mail
12/13/2001
Jimmy
  Mail

Right now it is giving this:

12/13/2001
John
  Water Plant
  Mail
John
  Water Plant
  Mail
12/13/2001
Jimmy
  Mail

XML File

<?xml version="1.0" encoding="UTF-8"?>
<NewDataSet>
	<Table>
		<mymonth>12</mymonth>
		<myday>13</myday>
		<myyear>2001</myyear>
		<CustomerName>John</CustomerName>
		<date>12/13/2001</date>
		<TimesPerDay>4</TimesPerDay>
		<ServiceName>Water Plant</ServiceName>
	</Table>
	<Table>
		<mymonth>12</mymonth>
		<myday>13</myday>
		<myyear>2001</myyear>
		<CustomerName>John</CustomerName>
		<date>12/13/2001</date>
		<TimesPerDay>5</TimesPerDay>
		<ServiceName>Mail</ServiceName>
	</Table>
	<Table>
		<mymonth>12</mymonth>
		<myday>13</myday>
		<myyear>2001</myyear>
		<CustomerName>Jimmy</CustomerName>
		<date>12/13/2001</date>
		<TimesPerDay>5</TimesPerDay>
		<ServiceName>Mail</ServiceName>
	</Table>
	<Table>
		<mymonth>12</mymonth>
		<myday>14</myday>
		<myyear>2001</myyear>
		<CustomerName>Jimmy</CustomerName>
		<date>12/14/2001</date>
		<TimesPerDay>5</TimesPerDay>
		<ServiceName>Mail</ServiceName>
	</Table>
</NewDataSet>




XSLT



<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
	<xsl:output method="html" version="1.0"
indent="yes"/>
	<xsl:key name="kCustomer" match="Table"
use="CustomerName"/>
	<xsl:key name="kDate" match="Table" use="date"/>

	<xsl:template match="NewDataSet">
		<head>
			<title>Employee's Week Schedule</title>
			<link href="../css/reports.css" type="text/css"
rel="stylesheet" />
		</head>	

		<table border="0" cellpadding="4"
style="border-collapse:collapse;" width="100%">
			<tr>
				<td colspan="1">
					<b>Customer Name</b>
				</td>
				<td colspan="1">
					<b>Service Name</b>
				</td>	
				<td colspan="2">
					<b>Times Per Day</b>
				</td>							
			</tr>					
				<xsl:apply-templates select="Table[generate-id() =
generate-id(key('kDate', date))]" mode="row1"/>						
		</table >
	</xsl:template>	


	<xsl:template match="Table" mode="row1">	
		<tr>
			<td colspan="4">		
				<div style="background-color:red"><xsl:value-of
select="date"/></div>
				<xsl:apply-templates
select="parent::NewDataSet/Table[date =
current()/date][CustomerName = key('kCustomer',
CustomerName)/CustomerName]" mode="row2"/>
			</td>
		</tr>

	</xsl:template>

	<xsl:template match="Table" mode="row2">
		<tr>
			<td colspan="4">			
				<hr/>
				<xsl:value-of select="CustomerName"/>
  			      <xsl:apply-templates
select="parent::NewDataSet/Table[date =
current()/date][CustomerName =
current()/CustomerName][ServiceName]" mode="row3"/>
			</td>			
		</tr>
	</xsl:template>
	
	<xsl:template match="Table" mode="row3">
		<tr>
			<td />
			<td colspan="1">			
				<xsl:value-of select="ServiceName"/>
			</td>
			<td colspan="2">			
				<xsl:value-of select="TimesPerDay"/>
			</td>						
		</tr>		
	</xsl:template>
	
</xsl:stylesheet>


=====
Home: (513) 661 - 8007 
Cell: (513) 884 - 4868 
Email: jamesanthonyhunt@xxxxxxxxx

__________________________________
Do you Yahoo!?
Yahoo! Small Business $15K Web Design Giveaway 
http://promotions.yahoo.com/design_giveaway/

Current Thread