연산자 및 특수 문자
XPath 식은 다음 표에 나와 있는 연산자 및 특수 문자를 사용하여 생성됩니다.
|
자식 연산자. 왼쪽 컬렉션의 바로 아래 자식을 선택합니다. 이 경로 연산자가 패턴 시작 부분에 표시된 경우 루트 노드에서 자식을 선택해야 함을 나타냅니다. |
|
재귀적 상속. 모든 수준에서 지정된 요소를 검색합니다. 이 경로 연산자가 패턴 시작 부분에 표시된 경우 루트 노드에서의 재귀적 상속을 나타냅니다. |
|
현재 컨텍스트를 나타냅니다. |
|
현재 컨텍스트 노드의 부모입니다. |
|
와일드카드. 요소 이름에 상관없이 모든 요소를 선택합니다. |
|
특성. 특성 이름에 대한 접두사입니다. |
|
특성 와일드카드. 이름에 상관없이 모든 특성을 선택합니다. |
|
네임스페이스 구분 기호. 요소 또는 특성 이름과 네임스페이스 접두사를 구분합니다. |
|
연산을 그룹화하여 우선 순위를 명시적으로 설정합니다. |
|
필터 패턴을 적용합니다. |
|
아래 첨자 연산자. 컬렉션 내의 인덱싱에 사용됩니다. |
|
더하기를 수행합니다. |
|
빼기를 수행합니다. |
|
IEEE 754에 따라 부동 소수점 나누기를 수행합니다. |
|
곱하기를 수행합니다. |
|
잘라낸 나누기의 나머지를 반환합니다. |
이 테이블에는 부울 및 집합 연산자가 포함되어 있지 않습니다. 이 사항은 부울, 비교 및 집합 식 또는 집합 연산에 나열되어 있습니다.
다음 표에는 우선 순위가 높은 것부터 순서대로 정의되어 있습니다.
우선 순위 | 문자 | 목적 |
---|---|---|
1 |
|
그룹화 |
2 |
|
필터 |
3 |
|
경로 연산 |
그룹 연산자 ()
는 최상위 경로 식에만 적용할 수 있습니다. 예를 들어, (//author/degree | //author/name)
식은 유효한 그룹화 연산이지만 //author/(degree | name)
식은 그렇지 않습니다.
필터 패턴 연산자([]
)의 우선 순위는 경로 연산자(/
및 //
)보다 높습니다. 예를 들어, //comment()[3]
식은 문서에서 주석의 부모에 상대적으로 인덱스가 3인 모든 주석을 선택합니다. 이 식은 부모에 상대적인 모든 주석 집합에서 세 번째 주석을 선택하는 (//comment())[3]
식과 다릅니다. 첫 번째 식은 주석을 둘 이상 반환할 수 있지만 두 번째 식은 주석을 하나만 반환할 수 있습니다.
이 참조서 전체에 걸쳐 이러한 연산자와 특수 문자에 대해 자세히 설명합니다.
경로 연산자
경로 연산자(/
및 //
)를 사용하여 특정 형식의 요소 컬렉션을 결정할 수 있습니다. 이 연산자에는 인수로서 선택을 수행할 "왼쪽" 컬렉션과 선택할 요소를 나타내는 "오른쪽" 컬렉션이 있습니다. 자식 연산자(/
)는 왼쪽 컬렉션의 바로 아래 자식에서 선택하며 하위 연산자(//
)는 왼쪽 컬렉션의 임의의 하위 항목에서 선택합니다. 실제로 계층 구조에서 //
는 하나 이상의 수준을 대체합니다.
경로 연산자는 쿼리를 수행할 때 컨텍스트를 변경합니다. 경로 연산자를 함께 연결하여 문서 트리를 살펴볼 수 있습니다.
예제
식 | 참조 항목 |
---|---|
|
현재 컨텍스트 노드의 |
|
|
|
|
|
|
|
현재 컨텍스트에서 수준이 하나 이상인 모든 세부 |
와일드카드 문자
와일드카드(*
) 컬렉션으로 대체함으로써 이름을 사용하지 않고도 요소를 참조할 수 있습니다. *
컬렉션은 태그 이름에 상관없이 현재 컨텍스트의 모든 자식 요소를 참조합니다.
예제
식 | 참조 항목 |
---|---|
|
|
|
|
|
현재 컨텍스트의 모든 최하위 요소 |
|
|
|
|
*:book
패턴은 지원되지 않습니다.
특성
XPath는 @
기호가 있는 특성 이름을 나타냅니다. 특성 및 자식 요소는 공평하게 처리되며 두 형식 간의 기능은 가능한 한 같습니다.
참고: |
---|
특성은 자식 요소를 포함할 수 없으므로 특성에 경로 연산자를 적용하면 구문 오류가 발생합니다.또한 정의에 따라 특성에 대한 순서가 정의되지 않으므로 특성에 인덱스를 적용할 수 없습니다. |
예제
식 | 참조 항목 |
---|---|
|
현재 요소 컨텍스트의 |
|
현재 컨텍스트 내에 있는 |
|
모든 |
특성이 자식을 포함할 수 없으므로 다음 예제는 유효하지 않습니다.
price/@exchange/total
여러 개의 특성 찾기
@*
를 사용하여 요소의 모든 특성을 반환할 수 있습니다. 특성을 레코드의 필드로 취급하는 응용 프로그램에서 이 기능은 매우 유용합니다.
예제
식 | 참조 항목 |
---|---|
|
현재 컨텍스트 노드의 모든 특성 |
|
|
@*:title
패턴은 지원되지 않습니다.