위치 단계
위치 단계는 컨텍스트 노드에 상대적인 노드 집합(node-set)을 선택합니다.
위치 단계에는 선택적 축, 노드 테스트 및 선택적 조건부의 세 부분이 있습니다. 위치 단계에 대한 구문은 축 이름, 이중 콜론, 노드 테스트, 0개 이상의 조건자를 차례로 입력한 것이며 각각 대괄호로 묶습니다. 이 구문의 가장 기본적인 형식은 다음과 같습니다.
axis::nodetest[predicate]
- axis
위치 단계로 선택할 노드와 컨텍스트 노드 간의 트리 관계를 지정합니다. 즉, 축은 컨텍스트 노드에서 위치 단계가 진행되는 일반적인 방향을 나타냅니다. 위치 단계에서 축은 선택적입니다. 축을 생략할 경우 축의 기본값은child::
입니다. 또한 여러 축에는 바로 가기 형식이 있습니다. 예를 들어, 앰퍼샌드(@
) 문자는 특성 축의 바로 가기입니다.
- nodetest
위치 단계에서 처음 선택할 노드 형식 또는 노드 확장 이름을 지정합니다. 기본적으로 노드 테스트는 지정된 축의 모든 노드 중에서 위치 단계에 대해 일치할 수 있는 후보로 간주되는 노드를 나타냅니다.
- predicate
XPath 식(일치해야 할 조건)을 사용하여 위치 단계에 의해 선택된 노드 집합을 구체화합니다. 조건자는 후보 노드 목록을 구체화하기 위해 선택 기준을 지정하는 필터입니다. 조건자는 선택적입니다. 조건자가 없을 경우 위치 단계에는 대괄호([
및]
)가 없습니다.
노드 선택
위치 단계로 선택한 노드 집합은 축과 노드 테스트 간의 관계를 기반으로 초기 노드 집합을 생성하고 각 조건자를 기준으로 초기 노드 집합을 차례로 필터링한 결과입니다.
초기 노드 집합은 다음 두 조건에 일치하는 노드로 구성됩니다.
노드가 축에 의해 지정된 컨텍스트 노드와 관계가 있는 경우
노드에 노드 테스트로 지정된 노드 형식 및 확장 이름이 있는 경우
그러면 XPath는 위치 단계에서 첫 번째 조건자를 사용하여 초기 노드 집합을 필터링함으로써 새 노드 집합을 생성합니다. 그런 다음 두 번째 조건자를 사용하여 첫 번째 조건자에 의해 생성된 노드 집합을 필터링합니다. 이 필터링 과정은 XPath에서 모든 조건자를 평가할 때까지 반복됩니다. 모든 조건자를 적용한 결과로 생성된 노드 집합은 위치 단계에 의해 선택된 노드 집합입니다.
![]() |
---|
축은 각 조건자에서 식을 평가하는 데 영향을 주기 때문에 조건자의 의미는 지정된 축과 관련하여 정의됩니다. |
다음 표에서는 전체 구문을 사용하는 몇 가지 샘플 위치 단계를 보여 줍니다.
위치 단계 | 설명 |
---|---|
|
컨텍스트 노드의 첫 번째 자식 노드를 찾습니다. |
|
해당 요소의 |
|
문서에서 부모 노드 이름이 "book"인 노드 또는 이름이 "author"인 컨텍스트 노드의 모든 하위 노드를 찾습니다. |