xsl-list
[Top] [All Lists]

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

2008-11-21 10:06:53
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>
--~--

<Prev in Thread] Current Thread [Next in Thread>