Hi Alex, Could you share a little self-contained example with us that demonstrates the wrong behavior, and name the versions of BaseX you tested? The two following expressions are equivalent: //row[position() > 1] /descendant-or-self::node()/child::row[position() > 1] They are not equivalent to: //row[./position() > 1] /descendant-or-self::node()/child::row[./position() > 1] Each result of child::row will be bound one by one to the context item in the predicate, thus ./position() will always yield 1. You can run the following queries to see the difference: (<a/>,<b/>)[trace(position())], (<a/>,<b/>)[trace(./position())] Does this help? Christian On Mon, Dec 2, 2019 at 7:25 PM Alexander Witzigmann <alexander.witzigmann@tanner.de> wrote:
the results of equivalent semantics:
e.g.
//row[position()>1]
is no more equal to in latest 9.3 release to
//row[./position()>1]
the later results in not correct result. Alex