[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Grouping and Sorting on value inside group
> If you know the sort column couldn't you use it to get a sorted sequence of > dataids and distribute your elements using that? > > eg, within a group: > <xsl:for-each select=*[local-name(.) = $sortColumn]> > <xsl:sort select="value"/> > <xsl:for-each select="../*[@dataid = current()/@dataid]> > <xsl:copy-of select="."/> > </xsl:for-each> > </xsl:for-each> Tom, I finally found the answer. Your use of [@dataid = current()/@dataid] provided the missing clue: <xsl:for-each select="(//dataset/*/*[generate-id() = generate-id(key('dataids', concat(local-name(..),@dataId)))])"> <xsl:sort select="parent::node()/*[local-name() = $sortcol and @dataId = current()/@dataId]/value"/> The real life version is somewhat more complicated in that it has to skip certain values and the name of the "value" node is dynamically picked from a list based on the sort column, but it all works. Now I get to define optional ascending or descending dependant on the column picked. The last step is to look at using more keys. I'd still like to know if I can use a key or some combination of keys to eliminate the //dataset reference in the for-each...(anyone)??? XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|