다음을 통해 공유


위치 단계

위치 단계는 컨텍스트 노드에 상대적인 노드 집합(node-set)을 선택합니다.

위치 단계는 선택적 축, 노드 테스트 및 선택적 조건자의 세 부분으로 구성됩니다. 위치 단계에 대한 구문은 축 이름, 이중 콜론, 노드 테스트, 0개 이상의 조건자를 차례로 입력한 것이며 각각 대괄호로 묶습니다. 이 구문의 가장 기본적인 형식은 다음과 같습니다.

axis::nodetest[predicate]
  • axis
    위치 단계로 선택할 노드와 컨텍스트 노드 간의 트리 관계를 지정합니다. 즉, 축은 컨텍스트 노드에서 위치 단계가 진행되는 일반적인 방향을 나타냅니다. 위치 단계에서 축은 선택적입니다. 축을 생략할 경우 축의 기본값은 child::입니다. 또한 여러 축에는 바로 가기 형식이 있습니다. 예를 들어, 앰퍼샌드(@) 문자는 특성 축의 바로 가기입니다.

  • nodetest
    위치 단계에서 처음 선택할 노드 형식 또는 노드 확장 이름을 지정합니다. 기본적으로 노드 테스트는 지정된 축의 모든 노드 중에서 위치 단계에 대해 일치할 수 있는 후보로 간주되는 노드를 나타냅니다.

  • predicate
    XPath 식(일치해야 할 조건)을 사용하여 위치 단계에 의해 선택된 노드 집합을 구체화합니다. 조건자는 후보 노드 목록을 구체화하기 위해 선택 기준을 지정하는 필터입니다. 조건자는 선택적입니다. 조건자가 없을 경우 위치 단계에는 대괄호([ 및 ])가 없습니다.

노드 선택

위치 단계로 선택한 노드 집합은 축과 노드 테스트 간의 관계를 기반으로 초기 노드 집합을 생성하고 각 조건자를 기준으로 초기 노드 집합을 차례로 필터링한 결과입니다.

초기 노드 집합은 다음 두 조건에 일치하는 노드로 구성됩니다.

  • 노드가 축에 의해 지정된 컨텍스트 노드와 관계가 있는 경우

  • 노드에 노드 테스트로 지정된 노드 형식 및 확장 이름이 있는 경우

그러면 XPath는 위치 단계에서 첫 번째 조건자를 사용하여 초기 노드 집합을 필터링함으로써 새 노드 집합을 생성합니다. 그런 다음 두 번째 조건자를 사용하여 첫 번째 조건자에 의해 생성된 노드 집합을 필터링합니다. 이 필터링 과정은 XPath에서 모든 조건자를 평가할 때까지 반복됩니다. 모든 조건자를 적용한 결과로 생성된 노드 집합은 위치 단계에 의해 선택된 노드 집합입니다.

참고

축은 각 조건자에서 식을 평가하는 데 영향을 주기 때문에 조건자의 의미는 지정된 축과 관련하여 정의됩니다.

다음 표에서는 전체 구문을 사용하는 몇 가지 샘플 위치 단계를 보여 줍니다.

위치 단계

설명

child::*[position()=1]

컨텍스트 노드의 첫 번째 자식 노드를 찾습니다.

ancestor-or-self::book[@catdate="2000-12-31"]

해당 요소의 catdate 특성 값이 "2000-12-31"인 경우 컨텍스트 노드의 <book> 자식을 비롯한 <book> 자식의 모든 상위 노드를 찾습니다.

//parent::node()[name()="book"] | descendant::node()[name()="author"]

문서에서 부모 노드 이름이 "book"인 노드 또는 이름이 "author"인 컨텍스트 노드의 모든 하위 노드를 찾습니다.

참고 항목

참조

노드 테스트

조건자