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

Subject: Re: [xsl] 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

Current Thread