XPath を使用して任意の深さの子要素を選択するにはどうすればよいですか? 質問する

XPath を使用して任意の深さの子要素を選択するにはどうすればよいですか? 質問する

次のような状況を想定します(簡略化)。

<form id="myform">
    <!-- some input fields -->
    <input type="submit" value="proceed"/>
</form>

すると、XPath で送信ボタンを選択できるようになります//form[@id='myform']/input[@type='submit']。すばらしい。

ただし、テンプレートは変更される可能性があり、送信ボタンを配置する深さを柔軟にしたいと思っています。次のように、テーブルに配置することもできます。

<form id="myform">
    <!-- some input fields -->
    <table><tr><td>
           <input type="submit" value="proceed"/>
    </td></tr></table>
</form>

孫である要素を選択できることはわかっていますが、任意の深さの孫、孫、孫、... の子を選択することはできません。例:

  • //form[@id='myform']/*/input[@type='submit']孫のみを選択し、それ以上の深さは選択しません。
  • //form[@id='myform']/*/*/input[@type='submit']それ以上の深さやそれ以下の深さではなく、孫の子孫だけを選択します。
  • //form[@id='myform']/**/input[@type='submit']有効じゃない。

では、要素 ID を使用せずにこの送信ボタンを確実に選択するにはどうすればよいでしょうか?

ベストアンサー1

もうすぐ完了です。以下を使用するだけです:

//form[@id='myform']//input[@type='submit']

ショートカット//は式内でも使用できます。

おすすめ記事