タグ パス

タグ パスは、タグのページ内での位置についての短いテキスト表現です。以下のタグ バスについて考えます。

     html.body.div.a

このタグ パスは、<html> タグ内の <body> タグ内にある <div> タグ内の <a> タグを表します。

タグ パスは、同じページにある複数のタグと照合することができます。たとえば、上のタグ パスは、このページのすべての <a> タグと照合されますが、下の図の 3 番目のタグは除きます。

<html>
   <body>
     <div>
       <a href="url...">Link 1</a>
       <a href="url...">Link 2</a>
     </div>
     <p>
       <a href="url...">Link 3</a>
     </p>
     <div>
       <a href="url...">Link 4</a>
       <a href="url...">Link 5</a>
       <a href="url...">Link 6</a>
     </div>
   </body>
 </html>

インデックスを使って、そのレベルの同じタイプのタグの中から特定のタグを参照することができます。以下のタグ バスについて考えます。

     html.body.div[1].a[0]

このタグ パスは、<html> タグ内の <body> タグにある 2 番目の <div> タグ内の 1 番目の <a> タグを表します。したがって、上記のページでは、このタグ パスは "Link 4" の <a> タグとのみ照合されます。タグパスのインデックスは 0 から始まることに注意してください。タグ パス上のタグにインデックスが指定されていない場合、上記の最初のタグのパスで見たように、パスはそのレベルの該当するタイプのあらゆるタグと照合されます。インデックスが負の場合、照合されるタグは、インデックス -1 に相当する最後の一致タグから逆方向にカウントされます。以下のタグ バスについて考えます。

     html.body.div[-1].a[-2]

このタグ パスは、<html> タグ内の <body> タグにある最後の <div> タグ内の最後から 2 番目の <a> タグを表します。したがって、上記のページでは、このタグ パスは "Link 5" の <a> タグとのみ照合されます。

アスタリスク ('*') を使って、任意のタイプの、任意の順番のタグを表すことができます。以下のタグ バスについて考えます。

     html.*.table.*.a

このタグ パスは、<html> タグ内の任意の場所に配置された <table> タグ内の任意の場所に配置された <a> タグを表します。任意のタグ パスの前にはアスタリスクがあると見なされるため、"* .table" の代わりに "table" を書いて、ページ上の任意のテーブル タグを表すことができます。唯一の例外はピリオド ('.') で始まるタグ パスで、これはタグ パスの前にアスタリスクがないことを意味します。この場合、タグ パスはページの最初の (トップレベルの) タグから照合する必要があります。

アスタリスクを使用すると、レイアウト関連のタグなど、時間の経過と共に変化する可能性がある重要でないタグを無視することができるため、ページの変更に対して安定したタグ パスを作成することができます。しかし、アスタリスクを使うと、誤って別のタグを見つける可能性も高くなります。

可能なタグのリストは、次のタグ パスのように、"|" で区切って指定することができます。

     html.*.p|div|td.a

このタグ パスは、<html> タグ内の任意の場所に配置された <p>、<div>、または <td> タグ内の <a> タグを表します。

タグ パスでは、ページ上のテキストはキーワードの "text" を使用して、他のタグと同様に表されます。技術的には、テキストはタグではありませんが、タグ パスでは同様に処理されて表示されます。例として、以下の HTML を考えます。

<html>
   <body>
     <a href="url...">Link 1</a>
     <a href="url...">Link 2</a>
   </body>
 </html>

タグ パス "html.body.a[1].text" は、テキスト "Link 2" を表します。