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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage