[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Grouping and Key Problem
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/
|
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
|