Subject: Re: Cheaper to prepend or append an item to a sequence?
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Tue, 22 Feb 2011 21:02:14 +0100
|
Hmm, maybe I misunderstand or we're mixing apples and pears. The way I
see it, you say "select all @id from whole doc which is not belong to
meta node" and that means check for each @id whether it belongs to a
meta-node. You cannot do that check only once. I don't see a difference
between your and my analysis.
On 22-2-2011 20:51, wQ^ESLAW sEDOW wrote:
nope... select all @id from whole doc which is not belong to meta node
- result ia same for every node
2011/2/22 Abel Braaksma<abel.online@xxxxxxxxx>:
wQ^ESLAW,
Actually, it _is_ dependent on the current node. //@id gets all @id nodes in
the document. The next "[..]" means "filter these nodes by the following
expression". That expression is a node-test: "not(ancestor::meta)", which is
applied to the _current_ node (the current @id-node).
That doesn't mean that a processor cannot optimize that, but in this case
that might proof futile: no single element can contain multiple attributes
with the same name. Hence the processor will have to test the predicate for
each and every found id-attribute.
In short: no, it cannot be calculated only once.
Kind regards,
Abel Braaksm
On 22-2-2011 20:26, wQ^ESLAW sEDOW wrote:
@id = //@id except (@id, //meta//@id) - yep... good idea
but i think that even //@id[not(ancestor::meta)] should be calculated
only once since it not depend from current node - is not it? is
optimizer capable to recognize context dependant from context
independant XPath fragments inside predicate and calculate independant
fragments only once instead calculating it every time for each node?
|