Unterschiede zwischen // und / Nachkomme in XPath bei der Auswahl mehrerer untergeordneter Elemente
Ich kann die Unterschiede zwischen der Verwendung von @ nicht klar versteh//element
und/descendant::element
bei der Auswahl mehrerer untergeordneter Elemente eines Basiselements in XPath.
Gab dieses HTML-Snippet
<html>
<body>
<div class="popupContent">
<table>
<tr class="aclass"><td> Hello </td> <td> <input type="text" value="FIRST" /> </td></tr>
<tr class="aclass"><td> Goodbye </td> <td> <input type="text" value="SECOND" /> </td></tr>
</table>
</div>
</body>
</html>
Ich muss jedes @ auswählinput
basierend auf seiner Positionierung in der Tabelle.//div[@class='popupContent']//input[1]
dies wählt den ersten Eingang//div[@class='popupContent']//input[2]
das gibtErro //div[@class='popupContent']/descendant::input[1]
dies wählt wieder den ersten Eingang//div[@class='popupContent']/descendant::input[2]
dies wählt den zweiten Eingang
Using/descendant::input
macht was ich brauche: nimm alle Eingaben und lass mich nach Position auswählen.
Wie funktioniert//
abweichen? Warum gibt es nur das erste und nicht die folgenden Elemente zurück?
Ich bin mir bewusst überdiese andere Frage aber die Antwort sagt im Grunde, dass sie Aliase sind und auf die Dokumentation verweisen, die ich nicht verstehen kann, und es fehlt ein konkretes Beispiel.