Subject: Re: [xsl] Grouping From: Ragulf Pickaxe <ragulf.pickaxe@xxxxxxxxx> Date: Wed, 7 Dec 2005 10:25:11 +0100 |
Hi prakash, > <xsl:output method="xml"/> > > <xsl:key name="rec" match="row" use="question_id"/> > > <xsl:template match="/recordset"> > > <xsl:for-each select="row"> > <xsl:if test="generate-id(.) = generate-id(key('rec', question_id))"> > <xsl:text> > </xsl:text> > Answers for question <xsl:value-of select="question_id"/> > </xsl:if> > <xsl:text> > </xsl:text> > > <xsl:value-of select="key('rec', question_id)/answer"/> > <xsl:text> > </xsl:text> > > </xsl:for-each> > > </xsl:template> Will you not have a problem here, if question_id are not ordered? As I read it, you go through all row elements. You check if the value of question_id is the first of its kind, and if it is, you write the Answers to question... Then you proceed to write the value of the answer element. As I see it, <xsl:value-of select="key('rec', question_id)/answer"/> is the same as <xsl:value-of select="answer"/>, and as you have not made sure of the value of question_id in your for-each, then this can be wrong. If I have not understood this correctly, please correct me. A key approach, I would use (modifying your template): <xsl:for-each select="row[generate-id(.) = generate-id(key('rec', question_id))]"> Answers for question <xsl:value-of select="question_id"/> <xsl:text> </xsl:text> <xsl:for-each select="key('rec', question_id)/answer"> <xsl:value-of select="."/> <xsl:text> </xsl:text> </xsl:for-each> </xsl:for-each> </xsl:template> This one will work no matter the order of question_id's. Regards, Ragulf Pickaxe :-)
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Grouping, omprakash . v | Thread | Re: [xsl] Grouping, omprakash . v |
Re: [xsl] Grouping, Ragulf Pickaxe | Date | Re: [xsl] Grouping, omprakash . v |
Month |