RE: Grouping and Sorting on value inside group
hello Peter If you want to avoid using "//dataset" you could have a key like this: <xsl:key name="dset" match="dataset" use="'all'"/> and access it using select="key('dataset','all')" > >>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"/> I agree with Wendell that the whole generate-id() malarkey is redundant, but it doesn't do the same thing as key('dataids', concat(local-name(..),@dataId)) because you will get every node that satisfies the predicate and not just the first one. And every node in //dataset/*/* that has a @dataid will be in the 'dataid' key and satisify the predicate. So won't this work just as well: <xsl:for-each select="key('dataset','all')/*/*"> The sort looks really cunning and probably is doing all the hard work here ;) Regards, Tom 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