Share via


위치 단계

위치 단계는 컨텍스트 노드에 상대적인 노드 집합(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"인 컨텍스트 노드의 모든 하위 노드를 찾습니다.

참고 항목

참조

노드 테스트

조건자