연산자 및 특수 문자

XPath 식은 다음 표에 나와 있는 연산자 및 특수 문자를 사용하여 생성됩니다.

/

자식 연산자. 왼쪽 컬렉션의 바로 아래 자식을 선택합니다.이 경로 연산자가 패턴 시작 부분에 표시된 경우 루트 노드에서 자식을 선택해야 함을 나타냅니다.

//

재귀적 상속. 모든 수준에서 지정된 요소를 검색합니다.이 경로 연산자가 패턴 시작 부분에 표시된 경우 루트 노드에서의 재귀적 상속을 나타냅니다.

.

현재 컨텍스트를 나타냅니다.

..

현재 컨텍스트 노드의 부모입니다.

*

와일드카드. 요소 이름에 상관없이 모든 요소를 선택합니다.

@

특성. 특성 이름에 대한 접두사입니다.

@*

특성 와일드카드. 이름에 상관없이 모든 특성을 선택합니다.

:

네임스페이스 구분 기호. 요소 또는 특성 이름과 네임스페이스 접두사를 구분합니다.

( )

연산을 그룹화하여 우선 순위를 명시적으로 설정합니다.

[ ]

필터 패턴을 적용합니다.

[ ]

아래 첨자 연산자. 컬렉션 내의 인덱싱에 사용됩니다.

+

더하기를 수행합니다.

-

빼기를 수행합니다.

div

IEEE 754에 따라 부동 소수점 나누기를 수행합니다.

*

곱하기를 수행합니다.

mod

잘라낸 나누기의 나머지를 반환합니다.

이 테이블에는 부울 및 집합 연산자가 포함되어 있지 않습니다. 이 사항은 부울, 비교 및 집합 식 또는 집합 연산에 나열되어 있습니다.

다음 표에는 우선 순위가 높은 것부터 순서대로 정의되어 있습니다.

우선 순위

문자

목적

1

( )

그룹화

2

[ ]

필터

3

/ //

경로 연산

그룹 연산자 ()는 최상위 경로 식에만 적용할 수 있습니다.예를 들어, (//author/degree | //author/name) 식은 유효한 그룹화 연산이지만 //author/(degree | name) 식은 그렇지 않습니다.

필터 패턴 연산자([])의 우선 순위는 경로 연산자(/ 및 //)보다 높습니다.예를 들어, //comment()[3] 식은 문서에서 주석의 부모에 상대적으로 인덱스가 3인 모든 주석을 선택합니다.이 식은 부모에 상대적인 모든 주석 집합에서 세 번째 주석을 선택하는 (//comment())[3] 식과 다릅니다.첫 번째 식은 주석을 둘 이상 반환할 수 있지만 두 번째 식은 주석을 하나만 반환할 수 있습니다.

이 참조서 전체에 걸쳐 이러한 연산자와 특수 문자에 대해 자세히 설명합니다.

경로 연산자

경로 연산자(/ 및 //)를 사용하여 특정 형식의 요소 컬렉션을 결정할 수 있습니다.이 연산자에는 인수로서 선택을 수행할 "왼쪽" 컬렉션과 선택할 요소를 나타내는 "오른쪽" 컬렉션이 있습니다.자식 연산자(/)는 왼쪽 컬렉션의 바로 아래 자식에서 선택하며 하위 연산자(//)는 왼쪽 컬렉션의 임의의 하위 항목에서 선택합니다.실제로 계층 구조에서 //는 하나 이상의 수준을 대체합니다.

경로 연산자는 쿼리를 수행할 때 컨텍스트를 변경합니다.경로 연산자를 함께 연결하여 문서 트리를 살펴볼 수 있습니다.

예제

참조 항목

author/first-name

현재 컨텍스트 노드의 <author> 요소 내에 있는 모든 <first-name> 요소

bookstore//title

<bookstore> 요소(임의의 하위 항목)에서 수준이 하나 이상인 모든 세부 <title> 요소.이 요소는 bookstore/*/title 패턴과 다릅니다.

bookstore/*/title

<bookstore> 요소의 최하위인 모든 <title> 요소

bookstore//book/excerpt//emph

<bookstore> 요소 내에 있는 <book> 요소의 <excerpt> 자식 내에 있는 모든 <emph> 요소

.//title

현재 컨텍스트에서 수준이 하나 이상인 모든 세부 <title> 요소.이 상황은 유일하게 기간 노테이션이 필요한 경우입니다.

와일드카드 문자

와일드카드(*) 컬렉션으로 대체함으로써 이름을 사용하지 않고도 요소를 참조할 수 있습니다.* 컬렉션은 태그 이름에 상관없이 현재 컨텍스트의 모든 자식 요소를 참조합니다.

예제

참조 항목

author/*

<author> 요소의 모든 요소 자식

book/*/last-name

<book> 요소의 최하위인 모든 <last–name> 요소

*/*

현재 컨텍스트의 모든 최하위 요소

my:book

my 네임스페이스의 <book> 요소

my:*

my 네임스페이스의 모든 요소

*:book 패턴은 지원되지 않습니다.

특성

XPath는 @ 기호가 있는 특성 이름을 나타냅니다.특성 및 자식 요소는 공평하게 처리되며 두 형식 간의 기능은 가능한 한 같습니다.

참고

특성은 자식 요소를 포함할 수 없으므로 특성에 경로 연산자를 적용하면 구문 오류가 발생합니다.또한 정의에 따라 특성에 대한 순서가 정의되지 않으므로 특성에 인덱스를 적용할 수 없습니다.

예제

참조 항목

@style

현재 요소 컨텍스트의 style 특성

price/@exchange

현재 컨텍스트 내에 있는 <price> 요소의 exchange 특성

book/@style

모든 <book> 요소의 style 특성

특성이 자식을 포함할 수 없으므로 다음 예제는 유효하지 않습니다.

price/@exchange/total

여러 개의 특성 찾기

@*를 사용하여 요소의 모든 특성을 반환할 수 있습니다.특성을 레코드의 필드로 취급하는 응용 프로그램에서 이 기능은 매우 유용합니다.

예제

참조 항목

@*

현재 컨텍스트 노드의 모든 특성

@my:*

my 네임스페이스의 모든 특성.이 특성은 my 네임스페이스의 요소에서 비정규화된 특성을 포함하지 않습니다.

@*:title 패턴은 지원되지 않습니다.

참고 항목

참조

XPath 예제

개념

집합 연산

XPath 구문에 대한 샘플 XML 파일(inventory.xml)