2012-04-02 114 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是一個非常好的閱讀!