Re: [xsl] are multiple predicates same as boolean and

Subject: Re: [xsl] are multiple predicates same as boolean and
From: David Carlisle <davidc@xxxxxxxxx>
Date: Fri, 21 Nov 2008 14:41:02 GMT
> If X[@a='hi'] matches a node, then that node will become the context
> node when evaluating [@b='hi..']

as Andrew just said [] the context node doesn't change, so 

> X[P][Q] is equivalent to X[P and Q] if and only if Q does not depend on
> the context node at all.

isnt't true, howver

context position (position() ) and size (last()) do change. so basically
repeated filters are equivalent to and unless any of them depend on
position() or last(), including the speical case of [integer] being
equivalent to  [position()=integer]
this last case is what makes it tricky to do a static rewite of this
unless you are a real XSLT engine that really know what is happening.
If you have
X[... foo ..][... bar ...]
you can only rewrite that to

X[(... foo ..) and (... bar ...)]
if you know that neither expression will evaluate to a number at run
time. You probably don't know that unless you are the XSLt engine,
except in special cases.


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