조건자
조건자는 축을 기준으로 노드 집합을 필터링하고 새 노드 집합을 생성하는 XPath 식입니다. 이 필터링 프로세스에서는 노드 집합의 각 노드에 대해 조건자를 순서대로 평가합니다. 노드에 대해 조건자를 평가할 때마다 다음 사항이 적용됩니다.
컨텍스트 노드는 현재 평가 중인 노드입니다.
컨텍스트 크기는 평가 중인 노드 집합의 노드 수입니다.
컨텍스트 위치는 노드 집합에서 컨텍스트 노드의 위치입니다.
노드 집합에서 컨텍스트 노드의 마지막 컨텍스트는 위치 단계에 지정된 축이 문서 트리를 탐색하는 방향에 상대적입니다. 일반적으로 축은 정방향 또는 역방향으로 트리를 탐색합니다.
정방향 축은 컨텍스트 노드 또는 컨텍스트 노드 뒤에 있는 노드가 포함된 축입니다. child::, descendant::, descendant-or-self::, following:: 및 following-sibling:: 축은 정방향 축입니다. 이 정방향 축은 노드 집합에서 문서 순서에 따라 첫 번째 위치 1에서 시작하여 노드에 숫자를 매깁니다.
역방향 축은 컨텍스트 노드 또는 컨텍스트 노드 앞에 있는 노드가 포함된 축입니다. ancestor::, ancestor-or-self::, preceding:: 및 preceding-sibling:: 축은 역방향 축입니다. 이 역방향 축은 노드 집합에서 문서 순서 반대로 첫 번째 위치 1에서 시작하여 노드에 숫자를 매깁니다.
나머지 축에서 self:: 및 parent:: 축은 단일 노드를 반환합니다. 그러므로 이 두 축에는 정방향이나 역방향을 지정하는 것이 무의미합니다. attribute:: 및 namespaces:: 축에 대해 정의된 순서가 없으므로 정방향 축도 역방향 축도 아닙니다.
노드 선택
조건자 식은 숫자나 부울 값으로 평가됩니다.
조건자가 숫자로 평가되면 XPath는 이 숫자를 컨텍스트 노드의 컨텍스트 위치와 비교합니다. 이 숫자와 위치가 같을 경우 즉, 컨텍스트 노드가 트리에서 적절한 위치에 있을 경우 조건자는 true로 평가되고 이 컨텍스트 노드는 새 노드 집합에 포함됩니다. 그렇지 않으면 컨텍스트 노드가 새 노드 집합에서 제외됩니다.
조건자가 부울 값으로 평가되면 XPath는 boolean 함수를 사용하여 결과를 부울 값으로 변환합니다. 예를 들어, 조건자 [genre='Computer']를 평가하면 노드 집합이 나옵니다. 컨텍스트 노드에 Computer 내용이 포함된 <genre> 자식 요소가 있을 경우 이 조건자는 true로 평가되고 이 컨텍스트 노드는 새 노드 집합에 포함됩니다. 그렇지 않으면 컨텍스트 노드가 새 노드 집합에서 제외됩니다.
참고
숫자 조건자[x]는 부울 조건자 [position()=x]와 같습니다.