I am clearly missing something here or at least not explaining very well.
If we are talking about a pattern,
b[2] - match the 'b' which is the second sibling 'b'
b[something][2] - match the second node that survives the match b[something]
At least that is what I read the standard & earlier quote as saying although I
could clearly be wrong on one or both counts. I suspect both of you are
saying,
b[something][2] - match the 'b' which is the second sibling 'b' if 'something'
evaluates to true.
This is what I understand Saxon to be doing.
The standard explains how the first predicate evaluation starts but is rather
silent on the effect on subsequent predicates. The simplest argument for the
first behaviour is that it is after the first predicate we follow normal
XPath behaviour.
Thanks for your replies,
Kev.