감자 텃밭

[WEB] XPath (XML Path Language) 본문

Web/Web Theory Information

[WEB] XPath (XML Path Language)

g2h 2023. 1. 22. 12:25

XPath 란 무엇인가??

XPath란 XML Path Language의 준말로 말 그대로

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

쉽게 말해 XML에 질의를 하거나 XML DB의 내용을 선택 및 수정이 가능하다.

 

XPath는 3가지 특징을 가지고 있는대 아래와 같다.


1. XPath는 XML 문서를 탐색하기 위해 경로 표현식을 사용한다.

2. XPath는 수학, 문자열 처리 등을 하기 위한 표준 함수 라이버러리를 내장하고 있다.

3. XPath는 W3C 표준 권고안인 XSLT에서 가장 중요한 부분 중 하나이다.


또한 XPath는 여러 종류의 노드가 존재한다.

  • 루트 노드
  • 요소 노드
  • 텍스트 노드
  • 속성 노드
  • 주석 노드
  • 네임스페이스 노드
  • 처리명령 노드

이러한 노드들을 이용하여 XPath에서는 문서의 노드나 노드 셋을 선택하기 위해 다양한 

표현식을 사용하게 된다.

여기서 노드셋이란 중복을 허용하지 않는 노드들의 순서 없는 집합을 의미한다.

위치 경로를 통해 각 노드의 위치를 지정할 수 있으며, 상대경로와 절대경로로 나눌 수 있다.

노드 이름 해당 '노드 이름'과 일치하는 모든 노드를 선택함.
/ 루트 노드부터 순서대로 탐색해 나감.
// 현재 노드의 위치와 상관없이 지정된 노드에서부터 순서대로 탐색해 나감.
. 현재 노드를 선택함.
.. 현재 노드의 부모 노드를 선택함.
@ 속성 노드를 선택함.
위치 경로가 / 하나로 시작하게 되면 단 하나의 요소만을 가리키는 절대 경로를 나타낸다.

위와 같이 위치 경로를 지정했을 때 찾고자 하는 노드를 위해 검색 방향을 설정하여야 한다.

이는 현재 노드를 기준으로 어느 방향으로 나갈지를 명시한다.

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

(이미지 인용 : http://www.tcpschool.com/lectures/img_xml_axes.png)

이제 해당 노드를 선택하기 위해 경로 표현식을 사용한다.

Syntax
검색방향::노드테스트[필터표현식]
  • 검색방향 : 현재 노드를 기준으로 노드를 검색할 방향 전달
  • 노드 테스트 : 검색 방향에 존재하는 해당 노드 검색
  • 필터 표현식 : 검색된 노드 셋에서 특정 노드나 특정 값을 포함하는 노드 선택

ex) attribute::version - 현재 노드의 version 속성 노드를 선택함

 

 

 

내용 출처 및 참고 사이트
https://ko.wikipedia.org/wiki/XML
https://aws.amazon.com/ko/what-is/xml/
http://www.tcpschool.com/xml/

※ 내용이 이상하거나 문제가 있을 경우, 또는 설명에 부족한 내용이 있으시면 알려 주시면 감사합니다.