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