|
Subject: Re: [xsl] Grouping and Key Problem From: James Hunt <jamesanthonyhunt@xxxxxxxxx> Date: Fri, 9 Apr 2004 13:37:26 -0700 (PDT) |
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>
> > <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/
> >
>
>
________________________________________________________________________
> Yahoo! India Matrimony: Find your partner online.
> http://yahoo.shaadi.com/india-matrimony/
>
=====
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 |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Grouping and Key Problem, Mukul Gandhi | Thread | RE: [xsl] Grouping and Key Problem, M. David Peterson |
| RE: [xsl] Getting the first and las, Wendell Piez | Date | Re: [xsl] 'apply-templates' on para, Wendell Piez |
| Month |