수색…


비고

XPath 위치 경로/ 문자로 구분 된 일련의 위치 단계입니다 .

step1/step2/step3

위치 단계 에는 , 노드 테스트 및 선택적 술어 목록이 들어 있습니다 . 노드 테스트는 두 개의 콜론 문자로 구분됩니다 :: . 술어 는 대괄호로 묶습니다.

axis::nodeTest[predicate1][predicate2]

위치 경로 의 평가는 표현식의 컨텍스트에 의해 주어진 컨텍스트 노드를 포함하는 노드 집합으로 시작하거나 위치 경로가 / 로 시작하는 경우 루트 노드 로 시작합니다. 각 단계에서 원래 노드 집합의 각 노드 N 은 다음과 같은 노드 집합으로 대체됩니다.

  • 주어진 축을 따라 N 에서 도달 할 수 있습니다.
  • 노드 테스트 와 일치합니다.
  • 모든 술어 와 일치합니다.

위치 경로 표현식의 결과는 모든 위치 단계를 처리 한 후 최종 노드 세트입니다.

하위 요소 통과

child 축을 사용하여 루트 노드에서 자손 요소로 이동 :

/child::html/child::body/child::div/child::span

child 축은 기본 축이므로 다음과 같이 축약 될 수 있습니다.

/html/body/div/span

모든 자손 트래버스

descendantdescendant-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() 대한 지름길입니다.

ancestorancestor-or-self 축이 노드의 모든 조상을 가로 지릅니다. 다음 표현식은 컨텍스트 노드의 조상 인 모든 div 요소를 반환합니다.

ancestor::div

"자체"축

self 축에는 컨텍스트 노드 만 포함됩니다. 표현 . self::node() 의 바로 가기이며 항상 컨텍스트 노드와 일치합니다. 그 . 바로 가기는 컨텍스트 노드의 하위 항목을 열거하는 데 유용합니다. 다음 표현식은 동일합니다.

.//span
self::node()/descendant-or-self::node()/child::span
descendant::span

self 축은 XPath 1.0 술어에서 유용 할 수 있습니다. 예를 들어, 컨텍스트 노드의 모든 h1 , h2h3 하위를 선택하려면 다음과 같이하십시오.

*[self::h1 or self::h2 or self::h3]

후행 및 선행 노드 통과

following-siblingpreceding-sibling 축에는 컨텍스트 노드 전후의 형제가 포함되며 followingpreceding 축에는 컨텍스트 노드 전후의 문서에있는 모든 노드가 포함되지만 다음과 같습니다.

  • 이러한 축에는 속성 또는 네임 스페이스 노드가 없습니다.
  • following 축에는 하위 항목이 없습니다.
  • preceding 축에는 조상이 포함되어 있지 않습니다.

예 :

following::span[1]
following-sibling::*[last()]

순회 속성 및 네임 스페이스 노드

attributenamespace 축은 요소의 모든 속성 및 네임 스페이스 노드를 포함합니다. @ 바로 가기는 attribute:: 므로 다음과 같습니다.

child::div/attribute::class
div/@class


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow