Subject: Re: AW: [xsl] XSL equivalent to SQL "unique" From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx> Date: Wed, 18 Apr 2001 16:33:14 +0100 |
Hi Oliver, > Perhaps Jeni will have a break and post some explanations on how to > solve problems like yours ;-) Well, I'm on a break, but what could I possibly add to the solution that you gave? Only, I guess, that this is an example of a difficult grouping problem where really you want to reuse the information about the *sorted* unique values, rather than having to sort them again for every row. This is one of those times that the node-set() extension function really comes into its own. So you could declare a top-level $cols variable with: <xsl:variable name="cols-rtf"> <!-- get the uniquely named child elements of the set elements --> <xsl:for-each select="//set/*[count(.|key('cols',name())[1]) = 1]"> <!-- sort the child elements by their name --> <xsl:sort select="name()" /> <!-- create col elements to hold that information --> <col name="{name()}" /> </xsl:for-each> </xsl:variable> <!-- turn $cols-rtf into a node set with an extension function (substitute prefix of your chosen processor) --> <xsl:variable name="cols" select="exsl:node-set($cols-rtf)" /> With that, then the various xsl:for-eaches for generating the column headers and the row data don't have to sort, they can just use the $cols variable and the name attribute from it, e.g. <xsl:template match="set"> <tr> <th><xsl:value-of select="@name" /></th> <xsl:variable name="entries" select="*" /> <xsl:for-each select="$cols"> <td> <xsl:value-of select="$entries[name() = current()/@name]" /> </td> </xsl:for-each> </tr> </xsl:template> Of course this isn't portable. So roll on XSLT 2.0... or support for EXSLT ;) Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: AW: [xsl] XSL equivalent to SQL, Oliver Becker | Thread | [xsl]Jumping out a loop, Tanzila Mohammad |
RE: [xsl] Err, XSLT problem?, Michael Kay | Date | [xsl] xsl:param syntax please, Java XML |
Month |