Altova Mailing List Archives>Archive Index >microsoft.public.xsl Archive Home >Recent entries [Thread Prev] >Thread Next - Re: How do I get grouping to apply per parent node? How do I get grouping to apply per parent node?To: NULL Date: 11/2/2004 9:06:00 AM 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.
Example:
Question 1
Response - Yes
Response - Yes
Response - No
Question 2
Response - Yes
Response - Yes
Response - Maybe
Transforms to something like this:
Response format would be Response (Count of grouping key)
Question 1
Yes (4)
No (1)
Question 2
Maybe (1)
-------------------------------------------------------------------------------------
What I would like to see is something that looks like this:
Question 1
Yes (2)
No (1)
Question 2
Yes (2)
Maybe (1)
Here is the small proof of concept code that I have been working on:
Transformation:
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="opt-group" match="/root/Question/Response" use="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',text())[1])]">
<tr>
<td><xsl:value-of select="text()" /></td>
<td><xsl:value-of select="count(key('opt-group', text()))" /></td>
</tr>
</xsl:for-each>
</tr>
</xsl:template>
</xsl:stylesheet>
XML:
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="ques_tran.xsl"?>
<root>
<Question Text="Question 1">
<Response id="1"><![CDATA[yes]]></Response>
<Response id="2"><![CDATA[yes]]></Response>
<Response id="3"><![CDATA[no]]></Response>
</Question>
<Question Text="Question 2">
<Response id="4"><![CDATA[yes]]></Response>
<Response id="5"><![CDATA[yes]]></Response>
<Response id="6"><![CDATA[maybe]]></Response>
</Question>
</root>
| ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
