XPath 컬렉션
XPath 쿼리에서 반환된 컬렉션은 문서 순서, 계층 구조 및 ID를 이들이 정의된 범위에 대해 유지합니다. 즉, 요소의 컬렉션은 반복되는 요소 없이 문서 순서로 반환됩니다. 정의에 따라 특성이 정렬되지 않으므로 특정 요소에 대해 반환되는 특성에는 암시적 순서가 없습니다.
특정 태그 이름을 가진 모든 요소의 컬렉션은 태그 이름 자체를 사용하여 표시됩니다. 마침표와 슬래시(./
)를 사용하여 현재 컨텍스트에서 요소가 선택되었음을 나타냄으로써 이를 정규화할 수 있지만 현재 컨텍스트가 기본적으로 사용되므로 명시적으로 표시할 필요가 없습니다.
예제
식 | 참조 항목 |
---|---|
|
모든 |
|
모든 |
컬렉션으로 인덱싱
XPath 식을 사용하면 노드 집합에 있는 특정 노드를 쉽게 쿼리할 수 있습니다. 단순히 인덱스 서수를 대괄호로 묶으면 됩니다. 서수는 1부터 시작하므로 첫 번째 요소는 숫자 1입니다.
대괄호 문자([]
)의 우선 순위는 슬래시(/
및 //
)보다 높습니다. 자세한 내용은 연산자 및 특수 문자를 참조하십시오.
예제
식 | 참조 항목 |
---|---|
|
첫 번째 |
|
|
인덱스는 필터링되는 집합에 상대적입니다. 예를 들어, 다음 데이터를 살펴보십시오.
<x>
<y/>
<y/>
</x>
<x>
<y/>
<y/>
</x>
다음 표에서는 특정 <x>
및 <y>
요소를 선택하는 방법을 보여 줍니다.
식 | 참조 항목 |
---|---|
|
각 |
|
|
|
첫 번째 |
위의 예제는 child::
축과 같은 암시적 기본값을 사용하는 XPath 컬렉션에 대한 단순 참조입니다. 이 축의 경우 자식 노드의 컬렉션은 정방향 문서 순서로 인덱싱됩니다.
ancestor::
와 같은 다른 축에 대해 XPath 식에서 명시적으로 축 이름을 사용합니다. 이 축의 경우 상위 컬렉션은 역방향 문서 순서로 인덱싱됩니다. 앞의 테이블에서 이 예제를 살펴보십시오.
x/y[1]
이 식은 다음 식과 같습니다.
x/child::y[1]
두 식은 모두 "각 <x>
요소에 대해 <y>
라는 첫 번째 자식 요소를 선택**"하는 것을 의미합니다.
다음 예제에서는 같은 구문을 사용합니다.
x/ancestor::y[1]
이 예제는 "각 <x>
요소에 대해 <y>
라는 첫 번째 상위 요소를 역방향 문서 순서로 선택"하는 것으로 해석됩니다. 구문은 같지만 순서는 반대입니다.
컬렉션에서 마지막 요소 찾기
last() 함수는 컬렉션의 마지막 요소에 대해 True를 반환합니다. last
는 부모 노드에 상대적입니다.
예제
식 | 참조 항목 |
---|---|
|
마지막 |
|
각 |
|
|
그룹화
명확하게 나타내기 위해 또는 일반 우선 순위와 다르게 연산을 표시할 때 괄호를 사용하여 컬렉션 연산자를 그룹화할 수 있습니다. 그룹화 연산자는 author[(degree or award)and publication]
와 같은 모든 필터 식(조건자)에서 사용할 수 있습니다. 또한 (book|magazine)
, (author/degree | book/award)
등의 최상위 단계 식에서도 사용할 수 있습니다. 그러나 하위 수준의 단계 식에는 적용할 수 없습니다. 예를 들어, author/(degree | award)
는 유효하지 않습니다.
예제
식 | 참조 항목 |
---|---|
|
현재 컨텍스트 노드에서 |
|
|