xsl-list
[Top] [All Lists]

Re: [xsl] Apply for-each-group to a node subset

2007-09-21 08:52:25
On Fri, Sep 21 2007 16:28:47 +0100, rocketraman(_at_)fastmail(_dot_)fm wrote:
Tony Graham wrote:
...
You may do better with:

   <xsl:apply-templates
      select="*[preceding-sibling::*[1][local-name() = 'g2']]"/>

which selects child elements whose first preceding sibling element (of
any type) is a 'g2'.

That selects only the first preceding sibling, which results in only
g1 nodes.

Sorry about that.  I had already worked out that I'd solved the wrong
problem.

...
It works, but I still don't understand why a simple nested predicate
does not work:

     <!-- process nodes after group -->
     <xsl:apply-templates select="*[preceding-sibling::g2[last()]]"/>

The way I read this is: apply templates to all the nodes that have the
LAST g2 as a preceding sibling, which should apply templates to all
nodes n3 to n4.

It doesn't do as you expect because the current node list has changed
for each predicate.

This will work:

   <xsl:apply-templates
     select="g2[last()]/following-sibling::*"/>

Regards,


Tony Graham.
======================================================================
Tony(_dot_)Graham(_at_)MenteithConsulting(_dot_)com   
http://www.menteithconsulting.com

Menteith Consulting Ltd             Registered in Ireland - No. 428599
Registered Office: 13 Kelly's Bay Beach, Skerries, Co. Dublin, Ireland
----------------------------------------------------------------------
Menteith Consulting -- Understanding how markup works
======================================================================

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--