2012-04-02 15 views
1

Ich bin auf der Suche nach einer Möglichkeit, einen Knoten in XPath auswählen, geben Sie, dass ein Knoten auf seinem Pfad vorhanden sein kann oder nicht. So wie '?' arbeitet in regexp;)XPath ignorieren Knoten

Zum Beispiel würde Ich mag eine XPath-Abfrage, um herauszufinden, zu <td> unabhängig von dem Fall zu erhalten, ob <tbody> Knoten vorhanden ist oder nicht, mit so etwas wie /table/(tbody)?/tr/td. Ich möchte es in beiden Fällen arbeiten:

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

und

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

Antwort

2

Dies kann fehlschlagen komplexere Fälle abzudecken, aber in diesem Beispiel /table/tbody/tr/td | /table/tr/td verwenden, sollten den Trick.

1

können Sie tun:

//table/descendant::tr/td 

oder

//table//tr/td 

je nach Ihrem Geschmack. Der Doppelstrich ist ein "Schau irgendwo auf dieser Ebene oder tiefer" (genauer gesagt, descendant-or-self:: Achse). The spec ist überraschenderweise eine sehr gute Lektüre dazu!

Verwandte Themen