Altova Mailing List Archives>Archive Index >microsoft.public.xsl Archive Home >Recent entries >Thread Prev - How do I get grouping to apply per parent node? >Thread Next - Re: How do I get grouping to apply per parent node? Re: How do I get grouping to apply per parent node?To: NULL Date: 11/3/2004 12:33:00 PM PierreDechaine wrote:
> I have applied the grouping across my xml, but have found that if I have
> another question that has the same response values the counts appear in
> first rendered grouping area.
You can use compound key here. The idea is to index by @Text and
Response value - one item for each unique combination of both.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="opt-group" match="/root/Question/Response"
use="concat(../@Text, '+', text())"/>
<xsl:template match="/root">
<html>
<head>
<title>Example</title>
</head>
<body>
<table width="100%" cellpadding="1" cellspacing="0" border="0">
<xsl:apply-templates select="Question"/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="Question">
<tr>
<td>
<xsl:value-of select="@Text"/>
</td>
<xsl:for-each
select="Response[generate-id()=generate-id(key('opt-group',concat(../@Text,
'+', text()))[1])]">
<tr>
<td>
<xsl:value-of select="text()"/>
</td>
<td>
<xsl:value-of select="count(key('opt-group',
concat(../@Text, '+', text())))"/>
</td>
</tr>
</xsl:for-each>
</tr>
</xsl:template>
</xsl:stylesheet>
--
Oleg Tkachenko [XML MVP]
http://blog.tkachenko.com
| ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
