Subject: [xsl] grouping where nodes are nested and structure repeats From: "Charles Macleod" <cmacleod@xxxxxxxx> Date: Sat, 11 Jun 2005 02:22:31 -0700 |
Hi, I would like to group the below xml (bottom of the email) by the "table" element value. I understand the concept of the Muench method and was able to construct a stylesheet that grouped the below xml as: (showing the value of "table" and "level") A:0 A:1 A:2 A:2 B:1 B:1 C:2 But what I was after was something that retained the "parent/child" relationship between the nodes - thus I wanted: A:0 A:1 <-- first "A" child of A:0 - grouped but the relationship to "it" and "its" children is retained A:2 <-- children of "A:1" grouped A:2 C:2 B:1 <-- second child of A:0 and so on B:1 The problem I'm running into is that the xsl key function with the syntax I'm using groups without regard to the parent/child hierachy. <!-- key function for grouping nodes by table --> <xsl:key name="entries" match="identifyentry" use="table"/> thus this bit: <xsl:for-each select="identifyentry[generate-id(.) = generate-id(key('entries',table)[1])]"> <xsl:sort select="table"/> <xsl:for-each select="key('entries',table)"> ...etc..... Gives me a grouping as listed initially above. I understand "why" (the key function is building an index across the occurence of all table values in the document) - I just don't have the syntactical expertise in xsl to modify the key or select statement to overcome the problem. I tried <xsl:key ........... use="concat(ancestor::table,'+',table)" but that didn't seem to make any difference. I googled and dug around but got overwhelmed by the number of different threads out there on grouping....Anyway, I'm hoping that this is a straightforward problem and someone has a solution. Any help much appreciated. Thanx in advance. -Charlie <identifyentry> <level>0</level> <table>A</table> <children> <identifyentry> <level>1</level> <table>B</table> </identifyentry> <identifyentry> <level>1</level> <table>A</table> <children> <identifyentry> <level>2</level> <table>A</table> </identifyentry> <identifyentry> <level>2</level> <table>A</table> </identifyentry> <identifyentry> <level>2</level> <table>C</table> </identifyentry> </children> </identifyentry> <identifyentry> <level>1</level> <table>B</table> </identifyentry> </children>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] translets not producing corre, celina | Thread | RE: [xsl] grouping where nodes are , Aron Bock |
[xsl] To avoid converting html enti, Ahsan Ali | Date | RE: [xsl] grouping where nodes are , Aron Bock |
Month |