수색…
비고
XPath 위치 경로 는 /
문자로 구분 된 일련의 위치 단계입니다 .
step1/step2/step3
위치 단계 에는 축 , 노드 테스트 및 선택적 술어 목록이 들어 있습니다 . 축 및 노드 테스트는 두 개의 콜론 문자로 구분됩니다 ::
. 술어 는 대괄호로 묶습니다.
axis::nodeTest[predicate1][predicate2]
위치 경로 의 평가는 표현식의 컨텍스트에 의해 주어진 컨텍스트 노드를 포함하는 노드 집합으로 시작하거나 위치 경로가 /
로 시작하는 경우 루트 노드 로 시작합니다. 각 단계에서 원래 노드 집합의 각 노드 N 은 다음과 같은 노드 집합으로 대체됩니다.
- 주어진 축을 따라 N 에서 도달 할 수 있습니다.
- 노드 테스트 와 일치합니다.
- 모든 술어 와 일치합니다.
위치 경로 표현식의 결과는 모든 위치 단계를 처리 한 후 최종 노드 세트입니다.
하위 요소 통과
child
축을 사용하여 루트 노드에서 자손 요소로 이동 :
/child::html/child::body/child::div/child::span
child
축은 기본 축이므로 다음과 같이 축약 될 수 있습니다.
/html/body/div/span
모든 자손 트래버스
descendant
및 descendant-or-self
축을 사용하여 노드의 모든 자손 요소를 임의의 깊이에서 찾을 수 있습니다. 반대로 child
축은 직계 자식 만 가로 뜁니다.
/child::html/descendant::span
/child::html/descendant-or-self::*
더블 슬래시 //
는 /descendant-or-self::node()/
의 바로 가기입니다. 따라서 다음 표현식은 동일합니다.
table//td
child::table/descendant-or-self::node()/child::td
child::table/descendant::td
table/descendant::td
조상 이동
parent
축에는 노드의 부모 만 포함됩니다. 다음 표현식은 body
요소를 우회하여 html
요소를 선택합니다.
/child::html/child::body/parent::html
..
는 parent::node()
대한 지름길입니다.
ancestor
과 ancestor-or-self
축이 노드의 모든 조상을 가로 지릅니다. 다음 표현식은 컨텍스트 노드의 조상 인 모든 div
요소를 반환합니다.
ancestor::div
"자체"축
self
축에는 컨텍스트 노드 만 포함됩니다. 표현 .
self::node()
의 바로 가기이며 항상 컨텍스트 노드와 일치합니다. 그 .
바로 가기는 컨텍스트 노드의 하위 항목을 열거하는 데 유용합니다. 다음 표현식은 동일합니다.
.//span
self::node()/descendant-or-self::node()/child::span
descendant::span
self
축은 XPath 1.0 술어에서 유용 할 수 있습니다. 예를 들어, 컨텍스트 노드의 모든 h1
, h2
및 h3
하위를 선택하려면 다음과 같이하십시오.
*[self::h1 or self::h2 or self::h3]
후행 및 선행 노드 통과
following-sibling
및 preceding-sibling
축에는 컨텍스트 노드 전후의 형제가 포함되며 following
및 preceding
축에는 컨텍스트 노드 전후의 문서에있는 모든 노드가 포함되지만 다음과 같습니다.
- 이러한 축에는 속성 또는 네임 스페이스 노드가 없습니다.
-
following
축에는 하위 항목이 없습니다. -
preceding
축에는 조상이 포함되어 있지 않습니다.
예 :
following::span[1]
following-sibling::*[last()]
순회 속성 및 네임 스페이스 노드
attribute
및 namespace
축은 요소의 모든 속성 및 네임 스페이스 노드를 포함합니다. @
바로 가기는 attribute::
므로 다음과 같습니다.
child::div/attribute::class
div/@class