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)
특정 축 내부의 노드를 인식합니다
무엇이든 여러 개의 변언자
선택된 노드 집합을 더 깊이 정제합니다

보의 문법:

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

예시

예제 결과
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 자식 노드를 선택합니다。