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(_at_)yahoo(_dot_)com
__________________________________
Do you Yahoo!?
Yahoo! Small Business $15K Web Design Giveaway
http://promotions.yahoo.com/design_giveaway/