Subject: [xsl] Sorting issue, sorting by description given code From: "Tony Rowe" <tony.rowe@xxxxxxxxxxxxxx> Date: Wed, 29 Oct 2003 11:19:55 +1100 |
Hi all. I have the following problem. This is the xml... <SEEDB> ... <Groups> <Group displayed="true" name="DEFAULT" num="0" /> <Group displayed="true" name="GROUP1" num="1" /> . . . <Group displayed="true" name="TREES" num="15" /> . . . <Group displayed="true" name="LOTS" num="19" /> . . . </Groups> ... <Points> <Point group="19" /> <Point group="15" /> <Point group="0" /> </Points> ... </SEEDB> Aim: To output a list of those Group names for which a Point belongs to, sorted alphabetically. >From above we have three points, so the desired result would be thus Group List... DEFAULT LOTS TREES This is an extract from my xsl stylesheet to process this file, showing that I am using a key to get unique group names based upon the Points node set . <xsl:key name="groups" match="Point" use="@group" /><!-- For Lines, change match to Line--> <xsl:template match="SEEDB"> <table class = "style1" border="1" cellspacing="0" cellpadding="2" width="650"> <tr > <th align="center">Point Groups</th> </tr> <!--xsl:for-each select="./Points/Point"--> <xsl:for-each select="./Points/Point[generate-id(.) = generate-id(key('groups',@group)[1])]"> <!--For Lines, change to ./Lines/Line[gen...etc] --> <xsl:sort select="./@group" data-type="text"/> <xsl:apply-templates select="."/> </xsl:for-each> </table> </xsl:template> <xsl:template match="Point"><!--For Lines, change match to Line--> <tr> <td align="center"><xsl:value-of select="/SEEDB/Groups/Group[@num=$group]/@name"/></td> </tr> </xsl:template> I am using sort to order by the Point @group attribute, and applying a template match on Point and the following result is achieved... DEFAULT TREES LOT I know why this is happening, since it is being sorted by num rather than by name, but how can I apply a sort to the name attribute of the group, since the name attribute is not an attribute of Point? I expect that I could do this setting up a nodeset variable, storing all the names node in this variable (instead of outputting immediately), sort the nodeset, and then output, but I wanted to avoid this if possible, since I am led to believe that some parsers don't have an equivalent "msxsl:node-set" function. Hope this makes sense. Tony Rowe XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Data not displaying in HT, Wendell Piez | Thread | RE: [xsl] Sorting issue, sorting by, Jarno . Elovirta |
RE: [xsl] Data not displaying in HT, Bill Walker | Date | [xsl] xsl:element name value with A, Arvind Bassi |
Month |