This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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))[1] 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]