XPath 정리 (+ HTML, XML)

FURVEN·2024년 7월 1일
0

IT

목록 보기
1/3
post-thumbnail

HTML (HyperText Markup Language)

: 주로 애플리케이션의 UI를 개발하는 데 사용 됌. 웹 사이트 또는 어플리케이션에서 볼 수 있는 텍스트, 이미지, 버튼 등 UI를 렌더링함.

XML (eXtensible Markup Language)

: 데이터 교환 및 전송이 주 목적. 기계와 사람이 모두 읽을 수 있는 형식으로 데이터를 인코딩함.

XML은 데이터가 무엇인지 설명하는 반면 HTML은 데이터를 최종 사용자에게 표시하는 방법을 결정함.

HTML에는 모든 사람이 사용해야하는 사전에 정의된 태그가 있고, 작성하는 동안에는 태그를 직접 만들 수 없습니다. 반면 XML은 문서 작성자로서 정의할 수 있는 사용자 지정 태그를 사용합니다.

XPath (XML Path Language)

: XML 문서의 특정 요소나 속성에 접근하기 위한 경로를 지정하는 언어.

  • ❓XML 문서의 경로를 잡는데, 웹 개발자 도구에서 HTML이 XPath로 어떻게 잡히는 가...❓

    : HTML 문서가 DOM(Document Object Model) 트리로 파싱되기 때문입니다. DOM 트리는 XML 트리와 유사한 구조를 가지므로 XPath를 사용하여 요소를 탐색하고 선택할 수 있습니다.

XPath의 표현식

  1. 위치 경로 (location path)
    : XML 문서의 각 노드의 위치를 지정하기 위한 XPath 표현식.
    위치 경로는 절대 경로와 상대 경로로 구분할 수 있습니다.
  • 절대 경로는 슬래시(/)로 시작하며, 루트 노드부터 순서대로 탐색해 나갑니다.
  • 상대 경로는 슬래시(/)로 시작하지 않으며, 기준으로 지정되는 노드부터 탐색해 나갑니다.
경로 연산자 설명
노드 이름 해당 '노드 이름'과 일치하는 모든 노드를 선택함.
/ 루트 노드부터 순서대로 탐색해 나감.
// 현재 노드의 위치와 상관없이 지정된 노드에서부터 순서대로 탐색해 나감.
. 현재 노드를 선택함.
.. 현재 노드의 부모 노드를 선택함.
@ 속성 노드를 선택함.

검색 방향 설명
self 현재 노드를 선택함.
attribute 현재 노드의 속성 노드를 모두 선택함.
namespace 현재 노드의 네임스페이스 노드를 모두 선택함.
child 현재 노드의 자식 노드를 모두 선택함.
descendant 현재 노드의 자손 노드를 모두 선택함.
descendant-or-self 현재 노드와 현재 노드의 자손 노드를 모두 선택함.
following XML 문서에서 현재 노드의 종료 태그 이후에 등장하는 모든 노드를 선택함.
following-sibling 현재 노드 이후에 위치하는 형제 노드를 모두 선택함.
parent 현재 노드의 부모 노드를 선택함.
ancestor 현재 노드의 조상 노드를 모두 선택함.
ancestor-or-self 현재 노드와 현재 노드의 조상 노드를 모두 선택함.
preceding

XML 문서에서 현재 노드 이전에 등장하는 모든 노드를 선택함.

(조상 노드, 속성 노드, 네임스페이스 노드는 제외함)

preceding-sibling 현재 노드 이전에 위치하는 형제 노드를 모두 선택함.

경로 표현식(path expression)

검색방향::노드테스트[필터표현식]

  1. 검색 방향 : 현재 노드를 기준으로 노드를 검색할 방향을 전달합니다.
  2. 노드 테스트 : 검색 방향에 존재하는 해당 노드를 검색합니다.
  3. 필터 표현식 : 검색된 노드셋(node-set)에서 특정 노드나 특정 값을 표함하는 노드를 선택합니다.

필터 표현식(filter expression)

[ 예제 ]

XPath 표현식 설명
p_languages/language[1] <p_languages>요소의 자식 노드 중 첫 번째 <language>요소를 선택함.
p_languages/language[position() < 3] <p_languages>요소의 자식 노드 중 처음 두 개의 <language>요소를 선택함.
p_languages/language[last()] <p_languages>요소의 자식 노드 중 마지막 <language>요소를 선택함.
//priority[@rating] rating 속성을 가지고 있는 <priority>요소를 모두 선택함.
//priority[@rating = 3] rating 속성의 속성값이 3인 <priority>요소를 모두 선택함.
count(//language) 모든 <language>요소의 개수를 반환함.

XPath 함수

: 선택된 노드셋을 평가하여 조건에 맞는 노드를 시퀀스 형태로 반환합니다.
아래는 가장 많이 사용되는 XPath 함수입니다.

XPath 함수 설명
position() 현재 노드셋 안에서의 노드의 위치를 반환함.
last() 현재 노드셋의 마지막 노드를 반환함.

count(위치경로)

지정된 노드셋의 총 노드 개수를 반환함.
name() 현재 노드의 이름을 반환함.

name(위치경로)

지정된 노드셋의 첫 번째 노드를 반환함.

임의 문자 기호(wild card)

: 임의의 노드를 선택하기 위해 임의 문자 기호(wild card)를 사용할 수 있습니다.

임의 문자 기호 설명
* 어떠한 요소 노드와도 일치함.
@* 어떠한 속성 노드와도 일치함.
node() 어떠한 종류의 어떤 노드와도 일치함.
text() 어떠한 텍스트 노드와도 일치함.

연산자(operator)

연산자 설명 반환 타입
- 음의 부호(단항 연산자) 숫자(number)
*, div, mod 곱셈, 나눗셈, 나머지 연산 숫자(number)
+, - 덧셈, 뺄셈 숫자(number)
<, <=, >, >= 비교 연산 불리언(boolean)
=, != 등가 비교 연산 불리언(boolean)
and 논리 AND 연산 불리언(boolean)
or 논리 OR 연산 불리언(boolean)
| 여러 개의 노드셋을 동시에 계산함. 노드셋(node-set)

[ 표현식 간단 정리 ]


profile
슬로우스타터 개발자 일지

0개의 댓글