XPath

W3C/XML 2006. 12. 12. 18:32
XPath

  • XML 엘리먼트의 경로를 설정하는데 사용되고, 주로 XSLT의 문서 변환에 사용된다.
  • 많은 표준 함수 라이브러리 형태로 제공한다.
  • XML 문법을 따르지 않는다.
  • XPath 표현식은 노드 집합(node-set), 문자열(string), 숫자형(number), 부울형(boolean) 타입으로 구분하여 사용자에게 원하는 결과를 알려준다.
  • XPath 표현식은 Location path 표현식을 기본으로 한다.

Location path

XML 문서의 어떤 노드에 대해서 절대경로와 상대경로의 위치에 존재하는 노드들을 선택할 수 있게 한다. 계산된 최종 결과는 선택된 노드들의 집합(node-set)이 된다.

axisname::nodetest[predicate]

- axisname : 어떤 노드를 검색하고자 하는 키가 되는 Location path 이름
- nodetest : 검색하고자 하는 노드
- predicate : 조건식

child::가격[가격>10000]

- 자식 엘리먼트 중에 10000보다 큰 가격을 갖는 <가격>엘리먼트를 선택한다.


Location path 표현식 (axisname)

ancestor - 현재 노드의 모든 부모 노드들을 가져온다.
ancestor-or-self - 모든 부모노드에 현재 노드를 포함하여 가져온다.
attribute - 현재 노드의 모든 속성을 가져온다.
child - 현재 노드의 모든 자식노드를 가져온다.
descendant - 현재 노드의 모든 자식노드를 가져온다.
descendant-or-self - 모든 자식노드에 현재 노드를 포함하여 가져온다.
following-sibling - 현재 노드 다음에 있는 모든 형재노드를 가져온다.
namespace - 현재 노드의 모든 네임스페이스 노드들을 가져온다.
parent - 현재 노드의 부모노드를 가져온다.
preceding-sibling - 현재 노드 전에 있는 모든 형제노드를 가져온다.
self - 현재 노드를 가져온다.


Location path 표현식의 단축 표현식

@ - attribute::
. - self::node()
.. - parent::node()
// - /descendant-or-self::node()
/ - Document Root


"/" 이용하여 노드 지정하기

"/"와 "//"은 XSLT에서 변환하고자 하는 XML 문서의 노드를 지정할 때 사용한다.
"/"는 문서의 루트(root)노드로서 가상 문서노드라고도 한다.
문서 루트노드는 최상위 엘리먼트보다 상위에 위치해 있다.

/책목록
- 최상위 엘리먼트인 <책목록> 엘리먼트가 선택된다.

/책목록/책/가격
- <책목록>의 하위에 있는 <책>엘리먼트 중에서 <가격>이라는 모든 엘리먼트를 선택한다.


"//" 이용하여 노드 지정하기

"//"는 경로와 상관없이 지정된 노드를 검색할 때 사용한다.
따라서 XML 문서 안에서 찾고자 하는 엘리먼트 이름과 동일한 이름의 엘리먼트를 모두 가져오게 된다.

//책
- XML 문서 안에 있는 모든 <책> 엘리먼트를 가져온다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,