OR'ing XPath的简写(相同的查询但多种标签类型)?

时间:2016-02-03 18:27:37

标签: html xml xpath xhtml

包含给定字符串的职位列表可能由<h2><h3><p>(通常)为首。我可以使用|逻辑OR这些,以便我的XPath将检测所有情况:

//h2[contains(., 'Project Manager')] | //h3[contains(., 'Project Manager')] | //p[contains(., 'Project Manager')]

我们这里有速记吗?

2 个答案:

答案 0 :(得分:2)

您可以使用*name()来检查元素的名称:

//*[name() = 'h2' or name() = 'h3' or name() = 'p'][contains(., 'Project Manager')]

或者,正如@kjhughes指出的那样,self::会使它更短,更具可读性:

//*[self::h2 or self::h3 or self::p][contains(., 'Project Manager')]

答案 1 :(得分:2)

有什么问题
//(h2|h3|p)[contains(., 'Project Manager')]

(或许需要XPath 2.0)