我需要查询节点以确定它是否具有包含指定属性的父节点。例如:
<a b="value">
<b/>
</a>
从b作为我的焦点元素,我想执行一个XPath查询:
..[@b]
将返回元素 a 。返回的元素必须是 a 的父节点,并且不应包含任何 a 的兄弟节点。
lxml.etree库声明这是一个无效的XPath表达式。
答案 0 :(得分:4)
您无法将.
或..
缩写与谓词组合在一起。相反,您需要使用完整的parent::
轴。以下内容适用于您:
parent::*[@b]
这将选择父节点(无论其本地名称如何),IFF它具有“b”属性。
答案 1 :(得分:1)
我不知道lxml.etree库,但..[@b]
是完全有效的XPath (更新:请参阅Ben Blank的评论)。与parent::a[@b]
相同,它将返回a
元素的上下文。