본문 바로가기

XPath Functions

필터를 이용한 엘리먼트 선택

필터는 특정한 엘리먼트를 선택할 때 사용된다.
조건식이나 XPath에서 제공하는 다양한 연산자, 표준함수와 같이 사용된다.
XPath 표현식에서 사용되는 모든 연산자와 함수들은 XPath 필터인 "["와 "]" 사이에 사용된다.

* XPath 연산자
+ 더하기
- 빼기
* 곱하기
div 나누기
mod 나눈 후 나머지값
= 같다
!= 같지 않다
< 작다
<= 작거나 같다
> 크다
>= 크거나 같다
or 또는
and 그리고

* XPath Node Set 함수
count - 현재 선택된 엘리먼트의 수를 가져온다.
id - 선택된 엘리먼트의 고유 ID를 가져온다.
last - 선택된 엘리먼트의 마지막 자식 엘리먼트를 가져온다.
local-name - 선택된 엘리먼트의 접두사를 제외한 이름을 가져온다.
name - 선택된 엘리먼트의 접두사를 포함한 이름을 가져온다.
namespace-uri - 네임스페이스의 경로를 가져온다.
position - 현재의 위치 정보를 가져온다.

* XPath 문자열 함수
concat - 두 문자열의 결합된 결과를 가져온다.
normalize-space - 불필요한 공백을 제거한다.
contains - 두 인자 중에 첫 번째 인자에 두 번째 인자의 문자가 있으면 true, 그렇지 않으면 false를 반환한다.
starts-with - 두 인자 중에 첫 번째 인자의 스트링의 첫 번째 문자와 두번째 인자의 시작 문자가 같으면 true를 반환한다.
string - 문자열로 변환한다.
string-length - 문자열의 길이를 반환한다.
substring - 전체 문자열 중에 지정한 만큼의 부분 문자열을 반환한다.
substring-after - 전체 문자열 중에 지정된 문자열의 바로 뒤의 문자열을 반환한다.
substring-before - 전체 문자열 중에 지정된 문자열의 바로 앞의 문자열을 반환한다.
translate - 문자열 안에서 해당 문자를 대체 문자로 치환한다.

* XPath 숫자형 함수
celling - 입력된 인자 중에서 가장 작은 자리의 정수(integer)를 반환한다.
floor - 입력된 인자 중에서 가장 큰 자리의 정수(integer)를 반환한다.
number - 수를 갖는 문자열을 인자로 입력받아 숫자로 바꾸어 준다.
round - 소수점의 자리를 없애준다.
sum - 엘리먼트의 값을 모두 찾아 더한다.

* XPath 부울형 함수
boolean - 인자를 Boolean으로 변환시킨다.
false - false를 반환한다.
not - 인자가 true이면 false를, false면 true를 반환한다.
true - true를 반환한다.

/책목록/책[1]
- 최상위 엘리먼트 <책목록>의 <책> 엘리먼트 중 첫번째 자식 엘리먼트가 선택된다.

/책목록/책[last()]
- 최상위 엘리먼트 <책목록>의 <책> 엘리먼트 중 마지막 자식 엘리먼트가 선택된다.

/책목록/책[가격>10000]/가격
- <책목록>의 <책> 엘리먼트 중 가격이 10000보다 큰 가격 엘리먼트가 선택된다.


다중 Path를 이용하여 선택하기

연산자 "|"를 이용하여 여러개의 Path 중 하나를 선택하여 사용할 할 수 있다.
"|" 표현문자는 여러 상황에 따라 필요한 값을 미리 설정해 놓는다.
주로 <xsl:if>와 함께 쓰여 조건에 부합하면 앞의 것을 부합하지 않으면 뒤의 것을 선택한다.

/책목록/책/제목 | /책목록/책/저자
//저자 | //가격



속성 선택하기

속성을 선택하기 위해서는 선택하고자 하는 속성 이름 앞에 Lcation path 표현식 중에 "Attribute::"의 단축 표현식인 "@"를 붙여준다.

- 문서 전체에서 이름이 country 인 속성을 모두 선택한다.

//책[@country]
- 문서 전체에서 속성 이름이 country를 가지는 모든 <책> 엘리먼트를 선택한다.

//책[@country='한국']
- 문서 전체에서 속성 이름이 '한국'인 <책> 엘리먼트를 선택한다.