|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Grouping and Key Problem
Hi James,
This should be ok. I ommited a xsl:for-each loop in
my previous answer.
<?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"
encoding="UTF-8" indent="yes"/>
<xsl:key name="kDate" match="Table" use="date"/>
<xsl:key name="kCustomer" match="Table"
use="concat(date,'+',CustomerName)"/>
<xsl:template match="/NewDataSet">
<html>
<table border="">
<xsl:for-each select="Table">
<xsl:if test="generate-id(.) =
generate-id(key('kDate', date)[1])">
<tr>
<td colspan="4">
<xsl:value-of select="date"/>
</td>
</tr>
<xsl:for-each select="key('kDate', date)">
<xsl:if test="generate-id(.) =
generate-id(key('kCustomer',concat(date,'+',CustomerName))[1])">
<xsl:for-each select="key('kCustomer',
concat(date,'+',CustomerName))">
<xsl:if test="position() = 1">
<tr>
<td/>
<td>
<xsl:value-of select="CustomerName"/>
</td>
<td>
<xsl:value-of select="ServiceName"/>
</td>
<td>
<xsl:value-of select="TimesPerDay"/>
</td>
</tr>
</xsl:if>
<xsl:if test="not(position() = 1)">
<tr>
<td colspan="2"/>
<td>
<xsl:value-of select="ServiceName"/>
</td>
<td>
<xsl:value-of select="TimesPerDay"/>
</td>
</tr>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:for-each> </xsl:if>
</xsl:for-each>
</table>
</html>
</xsl:template>
</xsl:stylesheet>
Regards,
Mukul
--- James Hunt <jamesanthonyhunt@xxxxxxxxx> wrote: >
Hi Mukul,
>
> Thanks for all your help, but I'm only getting the
> first customer from each date.
>
> Current Output:
>
> 12/13/2001
> John Water Plant 4
> Mail 5
> 12/14/2001
> Jimmy Mail 5
>
> What I need:
> 12/13/2001
> John Water Plant 4
> Mail 5
> Jimmy Mail 5
> 12/14/2001
> Jimmy Mail 5
>
> Can you tell me what I need to do?
>
> Thanks,
> James
>
> --- Mukul Gandhi <mukulgandhi2003@xxxxxxxxxxx>
> wrote:
> > Hi James,
> > I have written the logic specific to your
> > requirement. Hope its useful.
> >
> > <?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"
> > encoding="UTF-8" indent="yes"/>
> > <xsl:key name="kDate" match="Table" use="date"/>
> > <xsl:key name="kCustomer" match="Table"
> > use="concat(date,'+',CustomerName)"/>
> >
> > <xsl:template match="/NewDataSet">
> > <html>
> > <table border="1">
> > <xsl:for-each select="Table">
> > <xsl:if test="generate-id(.) =
> > generate-id(key('kDate', date)[1])">
> > <tr>
> > <td colspan="4">
> > <xsl:value-of select="date"/>
> > </td>
> > </tr>
> > <xsl:for-each select="key('kDate', date)">
> > <xsl:if test="generate-id(.) =
> >
>
generate-id(key('kCustomer',concat(date,'+',CustomerName))[1])">
> > <xsl:if test="position() = 1">
> > <tr>
> > <td/>
> > <td>
> > <xsl:value-of select="CustomerName"/>
> > </td>
> > <td>
> > <xsl:value-of select="ServiceName"/>
> > </td>
> > <td>
> > <xsl:value-of select="TimesPerDay"/>
> > </td>
> > </tr>
> > </xsl:if>
> > <xsl:if test="not(position() = 1)">
> > <tr>
> > <td colspan="2"/>
> > <td>
> > <xsl:value-of select="ServiceName"/>
> > </td>
> > <td>
> > <xsl:value-of select="TimesPerDay"/>
> > </td>
> > </tr>
> > </xsl:if>
> > </xsl:if>
> > </xsl:for-each>
> > </xsl:if>
> > </xsl:for-each>
> >
> > </table>
> > </html>
> > </xsl:template>
> >
> > </xsl:stylesheet>
> >
> > Regards,
> > Mukul
> >
> > --- James Hunt <jamesanthonyhunt@xxxxxxxxx>
> wrote:
> > >
> > 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>
>
=== message truncated ===
________________________________________________________________________
Yahoo! India Matrimony: Find your partner online. http://yahoo.shaadi.com/india-matrimony/
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








