XPath Axes(축)

XML 예제 문서

아래의 예제에서 이 XML 문서를 사용하겠습니다:

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

XPath �

축은 현재 점에 대한 노드 집합을 정의할 수 있습니다.

축 이름 결과
ancestor 현재 점의 모든 조상(부모, 고부 등)을 선택합니다.
ancestor-or-self 현재 점의 모든 조상(부모, 고부 등) 및 현재 점 자체를 선택합니다.
attribute 현재 점의 모든 속성을 선택합니다.
child 현재 점의 모든 자식 요소를 선택합니다.
descendant 현재 점의 모든 후손 요소(자식, 손자 등)을 선택합니다.
descendant-or-self 현재 점의 모든 후손 요소(자식, 손자 등) 및 현재 점 자체를 선택합니다.
following 문서에서 현재 점의 종료 태그 이후의 모든 점을 선택합니다.
namespace 현재 점의 모든 이름 공간 점을 선택합니다.
parent 현재 점의 부모 점을 선택합니다.
preceding 문서에서 현재 점의 시작 태그 이전의 모든 점을 선택합니다.
preceding-sibling 현재 점 이전의 모든 동급 점을 선택합니다.
self 현재 점을 선택합니다.

위치 경로 표현식

위치 경로는 절대적이거나 상대적일 수 있습니다.

절대 경로는 반대쪽 슬래시(/)에서 시작되며, 상대 경로는 이렇지 않습니다. 두 경우 모두, 위치 경로는 단계 하나나 여러 개를 포함하며, 각 단계는 슬래시로 분리됩니다:

절대적 위치 경로:

/step/step/...

상대적 위치 경로:

step/step/...

각 단계는 현재 점 집합 내의 각 노드에 따라 계산됩니다.

단계(step)은 다음을 포함합니다:

축(axis)
선택된 노드와 현재 노드 간의 트리 관계를 정의합니다.
노드 테스트(node-test)
특정 축 내의 노드를 인식합니다.
0개나 많은 변언자(predicate)
선택된 노드 집합을 더 깊이 추출합니다.

단계 문법:

축 이름::노드 테스트[변언]

인스턴스

예제 결과
child::book 현재 점에 속한 모든 자식 요소의 book 요소를 선택합니다.
attribute::lang 현재 점의 lang 속성을 선택합니다.
child::* 현재 점의 모든 자식 요소를 선택합니다.
attribute::* 현재 점의 모든 속성을 선택합니다.
child::text() 현재 점의 모든 텍스트 자식 점을 선택합니다.
child::node() 현재 점의 모든 자식 점을 선택합니다.
descendant::book 현재 노드의 모든 book 자손 노드를 선택합니다。
ancestor::book 현재 노드의 모든 book 조상 노드를 선택합니다。
ancestor-or-self::book 현재 노드의 모든 book 조상 노드 및 현재 노드(이 노드가 book 노드라면)
child::*/child::price 현재 노드의 모든 price 자식 노드를 선택합니다。