[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] Grouping and Key Problem
Subject: Re: [xsl] Grouping and Key Problem From: Mukul Gandhi <mukulgandhi2003@xxxxxxxxxxx> Date: Sat, 10 Apr 2004 11:12:57 +0100 (BST) |
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/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Grouping and Key Problem, James Hunt | Thread | [xsl] Is it possible to sort the wa, Ian Lang |
Re: RE: RE: [xsl] Saxon servlet and, xml4pharma | Date | Re: [xsl] match all attributes exce, Mark Lundquist |
Month |