Thanks, David for further thoughts .. this makes me better at this.
I have a related question ...
for real world XSLT/XPath programs, upto how many predicates can we
typically see?
I haven't seen programs using 3, 4 or more predicates.
X[..][..][..][..]
I have used one or two predicates upto now.
are excessively large number or predicates really useful? (the syntax
allows that ...)
I think perhaps, for complex 'and' conditions, using multiple
predicates are useful ...
On Fri, Nov 21, 2008 at 8:11 PM, David Carlisle
<davidc(_at_)nag(_dot_)co(_dot_)uk> wrote:
If X[(_at_)a='hi'] matches a node, then that node will become the context
node when evaluating [(_at_)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.
David
--
Regards,
Mukul Gandhi
--~------------------------------------------------------------------
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>
--~--