XPath: Recursive Ancestor Search

2019-07-31 16:26发布

问题:

With my current node selected I wish to find an element <name> [./name] and return the text content. If an element <name> does not exist in the currently selected node I wish to check the parent element [./parent::name] and so on recursively up to the root, returning the value of the nearest parent where the element exists.

Can it be done with XPath?

回答1:

(Edit: I misinterpreted the question the first time)

I propose to use

ancestor-or-self::name[1]

This finds all name elements, starting with self, parent, and so on, and orders them in increasing distance from self. So selecting [1] gives you the nearest one.