Subject: [xsl] XML grouping/sorting question - displaying a matrix From: "Kevin Daniels" <KevinDaniels@xxxxxxxxxxx> Date: Tue, 30 Mar 2004 00:59:58 -0500 |
I'm fairly new to XSL, but have been finding the great XSL resources out there a great help. Specifically, I have spent some time going through the various materials on Jeni Tennison's web site, most recently dealing with grouping and sorting (http://www.jenitennison.com/xslt/grouping/muenchian.html). I have a sample data set (trimmed down for simplicity) which looks like this: <records> <record> <id>0001</id> <test id="0001"> <title>Mr</title> <forename>John</forename> <name>X</name> </test> <test id="0002"> <title>Dr</title> <forename>Amy</forename> <name>B</name> </test> </record> <record> <id>0002</id> <test id="0003"> <title>Mr</title> <forename>Tim</forename> <name>Y</name> </test> <test id="0004"> <title>Dr</title> <forename>Kevin</forename> <name>X</name> </test> </record> ... </records> and am processing it using XSL in the following way: <xsl:template match="records"> <html> <body> <table> <xsl:for-each select="recod/test[count(. | key('test-by-name', name)[1]) = 1]"> <tr><td><xsl:value-of select="name" />|<xsl:value-of select="name()" /></td></tr> </xsl:for-each> <tr> <td>ID</td> <xsl:for-each select="record/test[count(. | key('test-by-name', name)[1]) = 1]"> <td><xsl:value-of select="name" /></td> </xsl:for-each> </tr> <xsl:for-each select="record"> <tr> <td><xsl:value-of select="id" /></td> <xsl:for-each select="test[count(. | key('test-by-name', name)[1]) = 1]"> <td><xsl:value-of select="name" /></td> </xsl:for-each> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> I am able to get the list of unique tests for all records, but ultimately I would like a way to produce a matrix similar to the following: ID X B Y C 0001 * * 0002 * * 0003 * * 0004 * * Is there a way to match each record/test node with the position in the key value and generate a matrix? Finally, I would ultimately like to sort the columns in the above matrix by element count so that the elements which appear most are in the first columns, though I haven't found a way to do this: ID X C B Y 0001 * * 0002 * * 0003 * * 0004 * * Any help would be appreciated, even if it's - "Sry this isn't possible with XSLT 1.0". Thanks, Kevin
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] having difficulty with XS, G. Ken Holman | Thread | RE: [xsl] XML grouping/sorting ques, Jarno.Elovirta |
Re: [xsl] having difficulty with XS, G. Ken Holman | Date | [xsl] fo:table Problem, not showing, Tuan Luu |
Month |