|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Grouping and Key Problem
Hi James,
I am not in a position to modify your XSL. But I can
suggest a piece of code. You need to define keys as
below, to do "grouping at two levels".
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" 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">
<xsl:for-each select="Table">
<xsl:if test="generate-id(.) =
generate-id(key('kDate', date)[1])">
<xsl:value-of select="date" />
<xsl:for-each select="key('kDate', date)">
<xsl:if test="generate-id(.) =
generate-id(key('kCustomer',
concat(date,'+',CustomerName))[1])"> <xsl:value-of
select="CustomerName"/>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</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/
|
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








