1. ホーム
  2. xpath

[解決済み] XPathを使って任意の深さの子要素を選択するにはどうすればよいですか?

2022-07-11 19:36:54

質問

次のようなものがあるとします(簡略化)。

<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'] は grand-grand-children のみを選択し、それ以上の深さは選択しません。
  • //form[@id='myform']/**/input[@type='submit'] は有効ではありません。

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

どのように解決するのですか?

もうすぐです。単に使用するだけです。

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

// のショートカットも式の中で使うことができます。