Есть ли способ указать младшего предка в XPath?

ancestor означает Selects all ancestors (parent, grandparent, etc.) of the current node согласно https://www.w3schools.com/xml/xpath_axes.asp.

Есть ли способ указать самого низшего предка вместо всех предков?


person user1424739    schedule 30.07.2019    source источник
comment
Не уверен, что понимаю. Самый низкий предок всегда является корнем /.   -  person PaulProgrammer    schedule 31.07.2019
comment
@PaulProgrammer, я считаю, что большинство сочло бы / высшим предком, а parent::node() - низшим. (Деревья в информатике традиционно рисуются с корнем выше, чем листья. Кроме того, упорядочение документов усиливает представление о том, что нижняя часть документа находится ниже верхней.)   -  person kjhughes    schedule 31.07.2019
comment
Самый глубокий, ближайший и т. Д.   -  person PaulProgrammer    schedule 31.07.2019


Ответы (1)


младший предок будет родителем, который задается .. или parent::node().

старшим предком будет корневой узел, который задается /; или, если вам нужен элемент наивысшего предка: /*.

См. Также В чем разница между корневым узлом, корневым элементом и элементом документа в XML?

Обратите внимание: если вы хотите выбрать самого низкого предка, который удовлетворяет предикату, добавьте [1] к предикату, предки упорядочиваются вверх от начальной точки, а не вниз от корня. Например,

//e[@id="e1"]/ancestor::*[@class][1]

выберет самого нижнего предка элемента e1 e, имеющего атрибут @class.

person kjhughes    schedule 30.07.2019