[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: are multiple predicates same as boolean and

Subject: Re: are multiple predicates same as boolean and
From: "Vasu Chakkera" <vasucv@xxxxxxxxx>
Date: Fri, 21 Nov 2008 15:53:39 +0000
Re:  are multiple predicates same as boolean and
I have seen that the large number of predicates mean that you are
doing a hardwork in getting what you want from the xml.
It  is unavoidable in cases where the XML is pretty much unchangeable
because of the business of the company or because your XML source
comes from a third party. But if you are designing a system from the
scratch, with the design of XML , then a lot of thought on the
relational model of the business with an inclination to what the
Output would look like or is catering, will help create smarter , and
high performance stylesheet, coupled with the good features of the
XSLT2  ( potentially with less predicates )


On Fri, Nov 21, 2008 at 3:06 PM, Mukul Gandhi <gandhi.mukul@xxxxxxxxx> wrote:
> 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@xxxxxxxxx> wrote:
>>
>>
>>> 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.
>>
>> David
>
>
> --
> Regards,
> Mukul Gandhi
>
>



-- 
Vasu Chakkera
Numerical Algorithms Group Ltd.
Oxford
www.vasucv.com

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.