XPath - 如何查询满足属性存在条件的父节点?

时间:2009-05-15 22:52:43

标签: python xml xpath

我需要查询节点以确定它是否具有包含指定属性的父节点。例如:

<a b="value">
    <b/>
</a>

从b作为我的焦点元素,我想执行一个XPath查询:

..[@b]

将返回元素 a 。返回的元素必须 a 的父节点,并且不应包含任何 a 的兄弟节点。

lxml.etree库声明这是一个无效的XPath表达式。

2 个答案:

答案 0 :(得分:4)

您无法将...缩写与谓词组合在一起。相反,您需要使用完整的parent::轴。以下内容适用于您:

parent::*[@b]

这将选择父节点(无论其本地名称如何),IFF它具有“b”属性。

答案 1 :(得分:1)

我不知道lxml.etree库,但..[@b]完全有效的XPath 更新:请参阅Ben Blank的评论)。与parent::a[@b]相同,它将返回a元素的上下文。