Subject: Re: [xsl] are multiple predicates same as boolean and From: "Vasu Chakkera" <vasucv@xxxxxxxxx> Date: Fri, 21 Nov 2008 15:53:39 +0000 |
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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] are multiple predicates s, Mukul Gandhi | Thread | Re: [xsl] are multiple predicates s, Michael Ludwig |
Re: [xsl] are multiple predicates s, David Carlisle | Date | Re: [xsl] are multiple predicates s, Mukul Gandhi |
Month |