Subject: RE: How to transform flat structure into hierarchical one? From: Jeni Tennison <Jeni.Tennison@xxxxxxxxxxxxxxxx> Date: Wed, 07 Jun 2000 17:27:22 +0100 |
Aleksandrs, Paulo Gaspar wrote: >And the typical algorithm to group the nodes has you wish involves a few >logical steps: > A - Sort the nodes by house number; > B - Separate the records in groups with the same house_id. When I read this, I realised that I forgot to include in my reply to you anything about sorting the rooms and houses within your records. It is very easy to add sorting to the solution that I sent earlier: you use an xsl:sort element within each xsl:for-each, with the select attribute indicating the thing that you want to sort by. So in your case: <xsl:template match="record_set"> <house_list> <!-- cycle through the first records in each group --> <!-- in order based on house_id --> <xsl:for-each select="record[generate-id() = generate-id(key('records', house_id)[1])]"> <xsl:sort select="house_id" /> <house> <id><xsl:value-of select="house_id" /></id> <rooms> <!-- cycle through each of the records in the group --> <!-- in order based on room_id --> <xsl:for-each select="key('records', house_id)"> <xsl:sort select="room_id" /> <room> <id><xsl:value-of select="room_id" /></id> </room> </xsl:for-each> </rooms> </house> </xsl:for-each> </house_list> </xsl:template> The same thing can be done with xsl:apply-templates (by including an xsl:sort within the xsl:apply-templates element), if you were using that instead. Sorry for the ommission. Cheers, Jeni Dr Jeni Tennison Epistemics Ltd, Strelley Hall, Nottingham, NG8 6PE Telephone 0115 9061301 ? Fax 0115 9061304 ? Email jeni.tennison@xxxxxxxxxxxxxxxx XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Imported style sheets, Carlos Sanchez | Thread | RE: How to transform flat structure, Paulo Gaspar |
MS chat tidbits, Clementson, Bill | Date | RE: XHTML to WML problem, Z. Uzmi |
Month |