This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: catching the last node still satisfying a condition
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() < $limit AND bar AND last()] or as
> > (((foo[position() < $limit])[bar])[last()]) ?
>
> Neither.
>
> foo[position() < $limit AND bar AND last()]
>
>
> isn't what you meant, you meant
> foo[position() < $limit and bar and position()=last()]
>
> in this one last() would return the number of foo elements.
>
> (((foo[position() < $limit])[bar])[last()])
>
> In this case this is equivalent to
> foo[position() < $limit][bar][last()]
>
>
> as foo is short for child::foo which is a forward axis.
>
> But for a reverse axis,
>
> ancestor::foo[position() < $limit][bar][last()]
>
> last() and position() relate to reverse document ordering but in
>
> (((foo[position() < $limit])[bar])[last()])
>
> last() and position() relate to document ordering
Thanks for those explanations, resulting xsl code is far cleaner.
--
Guillaume Rousse <rousse@ccr.jussieu.fr>
GPG key http://lis.snv.jussieu.fr/~rousse/gpgkey.html
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list