XPath查询。有条件减少的节点集的前置兄弟

时间:2010-07-28 06:52:26

标签: xpath

我得到了如下的html代码:

<p style="margin:0 0 0.5em 0;"><b>Blablub</b></p>
<table> ... </table>

现在我想查询表格正上方<b>的内容,但前提是表格中没有任何属性。我尝试了以下查询:

//表[否(@ *)] /前同辈:: P / B

如果我完全移除preceding-sibling::p/b部分,则可行。它给了我我需要的桌子。但是,如果我使用此查询,它会向我提供<b>标记的内容,该标记位于表WITH属性之前。

1 个答案:

答案 0 :(得分:3)

使用

//table[not(@*)]/preceding-sibling::*[1][self::p]/b

这意味着:选择所有b个元素的所有p个元素,这些元素是第一个之前没有属性的table兄弟。

这与问题中引用的问题表达完全不同

//table[not(@*)]/preceding-sibling::p[1]/b

后者选择跟随兄弟姐妹的第一个b的{​​{1}}个孩子 - 不能保证第一个p兄弟姐妹也是第一个兄弟姐妹。