Xpath
XPath 문법과 예제.
### 예제 HTML:
```html
<div>
<p>This is some text.</p>
<table>
<tr>
<td class="special">Special Text</td>
<td>
<span>Inside Span</span>
<button type="submit">Submit Button</button>
</td>
</tr>
</table>
</div>
<section>
<div>
<p>Another text</p>
<div class="nested">
<span>Nested Span</span>
<button type="button">Nested Button</button>
</div>
</div>
</section>
```
### XPath 문법 설명:
#### 첫 번째 조건:
1. `//div/p[contains(text(), "text")]`:
- `//div`: 문서 전체에서 "div" 태그를 선택합니다.
- `/p`: 선택된 "div" 태그의 하위 "p" 태그를 선택합니다.
- `contains(text(), "text")`: 선택된 "p" 태그의 텍스트가 "text"를 포함하는지 확인합니다.
2. `/../table//td[@class="special" and descendant::button[contains(text(), "Submit") and descendant::span[contains(text(), "Inside Span")]]]`:
- `/../`: 선택된 "p" 태그의 상위 "div" 태그를 선택합니다.
- `table//td`: 상위 "div" 태그 하위의 "table" 태그에서 "td" 태그를 선택합니다.
- `[@class="special" and descendant::button[contains(text(), "Submit") and descendant::span[contains(text(), "Inside Span")]]]`:
- `@class="special"`: 선택된 "td" 태그의 클래스가 "special"이어야 합니다.
- `descendant::button[contains(text(), "Submit") and descendant::span[contains(text(), "Inside Span")]]`:
- `descendant::button`: "td" 태그의 자손 중 "button" 태그를 선택합니다.
- `contains(text(), "Submit")`: 선택된 "button" 태그의 텍스트가 "Submit"을 포함하는지 확인합니다.
- `descendant::span[contains(text(), "Inside Span")]`: "button" 태그의 자손 중 "span" 태그를 선택하고, "span" 태그의 텍스트가 "Inside Span"을 포함하는지 확인합니다.
#### 두 번째 조건:
1. `//section/div/p[contains(text(), "Another text")]`:
- `//section/div`: 문서 전체에서 "section" 태그의 하위 "div" 태그를 선택합니다.
- `/p`: 선택된 "div" 태그의 하위 "p" 태그를 선택합니다.
- `contains(text(), "Another text")`: 선택된 "p" 태그의 텍스트가 "Another text"를 포함하는지 확인합니다.
2. `/div[@class="nested" and descendant::button[@type="button" and descendant::span[contains(text(), "Nested Span")]]]`:
- `/div`: 선택된 "p" 태그의 상위 "div" 태그를 선택합니다.
- `[@class="nested" and descendant::button[@type="button" and descendant::span[contains(text(), "Nested Span")]]]`:
- `@class="nested"`: 선택된 "div" 태그의 클래스가 "nested"이어야 합니다.
- `descendant::button[@type="button" and descendant::span[contains(text(), "Nested Span")]]`:
- `descendant::button`: "div" 태그의 자손 중 "button" 태그를 선택합니다.
- `[@type="button" and descendant::span[contains(text(), "Nested Span")]]`:
- `@type="button"`: 선택된 "button" 태그의 타입이 "button"이어야 합니다.
- `descendant::span[contains(text(), "Nested Span")]`: "button" 태그의 자손 중 "span" 태그를 선택하고, "span" 태그의 텍스트가 "Nested Span"을 포함하는지 확인합니다.