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 :-)
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--