[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] catching the last node still satisfying a condition


Subject: Re: [xsl] catching the last node still satisfying a condition
From: Guillaume Rousse <rousse@xxxxxxxxxxxxxx>
Date: Thu, 13 Sep 2001 17:38:54 +0200

Ainsi parlait David Carlisle :
> > Are successive predicate legal ?
>
>  yes. There are examples of this in the spec are there not?
Yes they are, altough not very proeminent. I missed them initialy :-)

> >And are they evaluated as
> > foo[position() &lt; $limit AND bar AND last()] or as
> > (((foo[position() &lt; $limit])[bar])[last()]) ?
>
> Neither.
>
> foo[position() &lt; $limit AND bar AND last()]
>
>
> isn't what you meant, you meant
> foo[position() &lt; $limit and bar and position()=last()]
>
> in this one last() would return the number of foo elements.
>
> (((foo[position() &lt; $limit])[bar])[last()])
>
> In this case this is equivalent to
> foo[position() &lt; $limit][bar][last()]
>
>
> as foo is short for child::foo which is a forward axis.
>
> But for a reverse axis,
>
> ancestor::foo[position() &lt; $limit][bar][last()]
>
> last() and position() relate to reverse document ordering but in
>
> (((foo[position() &lt; $limit])[bar])[last()])
>
> last() and position() relate to document ordering

Thanks for those explanations, resulting xsl code is far cleaner.
-- 
Guillaume Rousse <rousse@xxxxxxxxxxxxxx>
GPG key http://lis.snv.jussieu.fr/~rousse/gpgkey.html

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread
Keywords
xsl