Subject: Re: [xsl] access to preceding-sibling in a sorted list From: "Simon Ruf" <simon@xxxxxxxxx> Date: Tue, 4 Sep 2007 16:20:04 +0200 |
Thanks alot. I haven't tried it yet but found quite some bit of information about this grouping-thing and I think I'll be able to implement this - and even better: I think this answers another not-yet-asked question I had in mind. Simon On 9/4/07, David Carlisle <davidc@xxxxxxxxx> wrote: > > this is easier in xslt2 (where xsl-for-each-group does what you want) in > xslt1 there are essentially two approaches. > > 1 (the "pipeline" approach) first sort the items, not adding the id > attributes, but do it into a variable > <xsl:variable name="first-pass"> > the code to generate a list of <li> elements > </xsl:variable> > > then use the xx:node-set() extension function taht most XSLT1 engines > have to allow you to proxcess this, the sorted items now are siblins so > you can do > > <xsl:for-each select="xx:node-set($first-pass)/li"> > <xsl:copy> > <xsl:if test="...."><xsl:attribute name="id"..... > > > > 2 (the grouping approach) > View it as a grouping problem, and use one of the XSLt 1 grouping idioms > (google for muenchian grouping) for example You want to group on first > letter, sort the groups, sort each item in each group and add an > attribute on teh first > > <xsl:key name="l" match="card" use="substring(full-name,1,1)"/> > > <xsl:for-each > select="card[generate-id()=generate-id(key('l',substring(full-name,1,1)))]"> > <xsl:sort select="full-name"/> > <xsl:variable name="letter" slect="key('l',substring(full-name,1,1)))"/> > <xsl:for-each select="key('l',$letter)"> > <xsl:sort select="full-name"/> > <li> > <xsl:if test="position()=1"><xsl:attribute name="id"><xsl:value-of > select="$letter/></xsl:attribute> > <xsl:value-of select="full-name"/> > > (untested) > > David > > ________________________________________________________________________ > The Numerical Algorithms Group Ltd is a company registered in England > and Wales with company number 1249803. The registered office is: > Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom. > > This e-mail has been scanned for all viruses by Star. The service is > powered by MessageLabs. > ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] access to preceding-sibli, David Carlisle | Thread | [xsl] Variable in xsl:import href a, Bernie |
[xsl] Variable in xsl:import href a, Bernie | Date | Re: [xsl]Putting Mouseover Javascri, Lech Rzedzicki |
Month |