Короче как всегда оказалось, что в какой-нибудь версии БАС что-нибудь работает некорректно. В данном случае оказалось что в 23.2 верный XPATH просто не работал.
XPATH>(//[@class='PartHeader'])[3]/../following-sibling::tr[position()<= count((//[@class='PartHeader'])[3]/../following-sibling::tr) - count((//*[@class='PartHeader'])[4]/../following-sibling::tr)]/td/a
А вот в 24 с ним всё норм
Если вдруг кто столкнется с необходимостью поиска элементов между двумя другими можете пользоваться этой схемой.
В примере мы выделяем tr следующие за [@class='PartHeader'])[3]/../ в количестве tr следующих за [@class='PartHeader'])[3]/../ МИНУС количество tr следующие за [@class='PartHeader'])[4]/../