2010-02-02 55 views
6

Đây là bài đăng đầu tiên của tôi ở đây và vì tôi đã thấy nhiều câu trả lời tuyệt vời mà tôi nghĩ tôi sẽ thử.Phần tử XPath chứa thuộc tính và cha mẹ của cha mẹ có thuộc tính khác

Tôi đang cố gắng sử dụng XPath để lấy phần tử cụ thể trong tài liệu HTML. Dưới đây là một ví dụ dựa tắt của các trang web của Google:

<html> 
    <head> 
    <title>XPath Test</title> 
    </head> 
    <body> 
    <form name='f'> 
     <table> 
     <tbody> 
      <tr> 
      <td> 
       <input name='q' type="text" /> 
      </td> 
      </tr> 
     </tbody> 
     </table> 
    </form> 
    </body> 
</html> 

Sử dụng ví dụ trên (được đơn giản hóa cho mục đích của yêu cầu giúp đỡ), tôi muốn để có thể tìm thấy những yếu tố đầu vào có tên = 'q' và có tổ tiên là 5 cha mẹ với tên = 'f'.

Ví dụ: nếu tôi làm điều này theo cú pháp S.W.A.T. là một thư viện kiểm tra tự động hóa mã nguồn mở nằm ở số http://ulti-swat.wikispaces.com, cú pháp sẽ như sau:

| AssertElementExists | Expression | name = q; parentElement.parentElement.parentElement.parentElement.parentElement.name = f | input |

Tôi vừa mới bắt đầu học XPath và đang cố gắng hiểu cách kết hợp các biến vị ngữ với các trục. Có thể làm các biểu thức như thế này với XPath không? Nếu có ai đó có thể hiểu biết, xin hãy giúp đỡ?

Trả lời

13

Bạn có thể làm:

//input[@name='q' and ancestor-or-self::*[@name='f']] 
// -- input element whose name='q' and who has an ancestor with the name='f' 

hoặc

//input[@name='q' and ../../../../../../*[@name='f']] 
// -- input element whose name='q' and who is 5 parents up with the name='f' 

Bạn có thể sử dụng máy tính để bàn này XPath Visualizer để kiểm tra biểu thức XPath của bạn. A basic tutorial can be found here.

Các vấn đề liên quan