Subject: Re: are multiple predicates same as boolean and
From: Ronan Klyne <ronan.klyne@xxxxxxxxxxx>
Date: Fri, 21 Nov 2008 14:40:07 +0000
|
Andrew Welch wrote:
>>> apart from this use case you cited, are all other forms equivalent
>>> (which do not involve positional predicates)?
>> No.
>>
>>> like,
>>> X[@a='hi'][@b='hi..']
>> If X[@a='hi'] matches a node, then that node will become the context
>> node when evaluating [@b='hi..']
>>
>>> would be same as
>>> X[@a='hi' and @b='hi..']
>> X is the context node here, so the predicate will be considering @b='hi..'
>>
>> X[P][Q] is equivalent to X[P and Q] if and only if Q does not depend on
>> the context node at all.
>
> Only / will change the context node, so I would've thought one
> predicate after the other is pretty much equivalent apart from cases
> that rely on size of the selection (which is the only thing that
> changes after each predicate)
I was misunderstanding - sorry for the confusion.
Considering this XML:
<doc>
<X @a="1">
<Y @b="2"/>
</X>
</doc>
When <doc> is the context node, I was expecting that
X[Y[@b]] would do the same as X[Y][@b]
I (and Saxon) can see now that this is wrong.
Thanks Andrew,
# r
--
Ronan Klyne
Business Collaborator Developer
Tel: +44 01189 028518
ronan.klyne@xxxxxxxxxxx
www.groupbc.com
|