Я тоже не думаю, что это возможно (учитывая тот факт, что я не смог это сделать :)). Конечно, если вам разрешено изменять xml (даже просто временно во время этой обработки), вы можете обновить его, чтобы поместить количество дочерних элементов в качестве атрибута на узле (или в качестве самого значения узла), после чего это легко:
/xml/node[not(../node/@childCount > ./@childCount)]
или
/xml/node[not(../node > .)]
Но вы, наверное, уже знаете это.
Другая вещь, которую я подумал, может сработать, чтобы сделать некоторые умные вычисления по принципу линий голубиных отверстий, взять в качестве входных данных общее число детей и число node
с и получить минимальное число детей, которое максимально узел должен иметь, а затем делать
/xml/node[child[position()=formula_for_magic_number_goes_here]]
но вскоре я понял, что не могу придумать такую формулу, которая бы правильно работала во всех случаях - например, если бы было 10 node
s с количеством детей 10, 99 1, 1, (и остальные 1 тоже), никакие манипуляции с числами 27 и 10 не приведут к точке отсечения, которая включает 10, но исключает 9.