2012-04-02 170 views
1

我正在寻找一种方法来选择xpath中的一个节点,给出它的路径上的节点可能存在与否。就像 '?'工作在正则表达式;)xpath忽略节点

举例来说,我想找出一个XPath查询去<td>不管的情况下<tbody>节点存在与否,喜欢的东西/table/(tbody)?/tr/td。我想它在这两种情况下工作:

<table> 
<tr> 
    <td /> 
</tr> 
</table> 

<table> 
<tbody> 
    <tr> 
    <td /> 
    </tr> 
</tbody> 
</table> 

回答

2

这可能无法覆盖更复杂的情况,但在使用/table/tbody/tr/td | /table/tr/td应该做的伎俩这个例子。

1

你可以这样做:根据你的口味

//table/descendant::tr/td 

//table//tr/td 

。双斜线是“在这个层面或更深处的某处看起来的样子”(更正式地说,轴线是descendant-or-self::)。令人惊讶的是,The spec是一个非常好的阅读!