1. XPath의 기초
XPath의 표현법은 잘 알아 두는 것이 XSL을 이해하고 사용하는데 많은 도움을 줄것이다. 이에 여기에 대한 설명을 간단히 하고자 한다.
XSL을 이전 강의들을 통해 공부하면서 에서 /는 문서 전체를 가리킨다라고 했는데, 이 match속성에 들어 오는 이 값이 XPath의 표현이다.
XPath란 XML 문서의 각 부분(node:엘리먼트)에 접근할 수 있도록 해주는 언어로서 XSL과 XLink에서 사용하기 위해 설계된 것이다.
template의 match속성이나 value-of의 select 속성등 XML 문서의 내용을 가리키는 모든 부분에서 XPath의 표현이 사용된다. 때문에 XPath는 XSL에서의 핵심기술이라고 할 수 있다.
다음의 template을 예로 보도록 하자.
이 예제에서 잘못된 XPath를 사용하게 되면 데이터는 표시되지 않는다. 아래에 잘못된 XPath를 적용한 예가 있다. 비교해 보기 바란다.
2. XPath의 연산자
(1) 논리 및 비교 연산자
|
| and | 논리합 | or | 논리곱 | not() | 논리부정 | = | 같다 | != | 다르다 | < | 작다 | <= | 작거나 같다 | > | 크다 ( '>' 사용가능) | >= | 크거나 같다. ('>=' 사용가능) |
(2) 산술연산자
|
|
|
|
| |
|
| |
|
| |
|
| 10 div 3 = 3.333333333333 |
|
| 10 mod 3 = 1 |
(3) 노드를 나타내는 연산자
노드(node)란 XML에서 각 엘리먼트나 애트리뷰트는 트리구조의 각 단계로 나타낼 수 있는데 이것을 노드라고 부른다. 이때 노드를 나타내는 여러가지 방법이 있는데 이 방법은 노드 연산자라는 것을 사용한다.
다음과 같은 요소를 예로 들어 보자
위의 의미는 이미 알고 있는 것처럼 books엘리먼트의 자식인 book엘리먼트를 가리키고 있다. 이때 중간에 든 /가 자식요소나 속성을 가리키는 XPath연산자이다. 만약 그렇다면 현재 노드의 자식요소, 손자요소, 증손자요소 등을 포함하는 모든 '후손'요소중에 이름이 book인 엘리먼트를 지정하고 싶은 경우가 있다면....일일이 모두 모든 경로를 다 포함하여 지정해줘야만 할까...??
아니다. 이때 사용하는 //라는 XPath 연산자가 있다. 즉, books엘리먼트 의 후손들중에 book이라는 모든 엘리먼트를 찾고 싶다면 다음과 같이 지정해 주면 된다.
위의 예제로 적용받을 수 있는 노드들의 예는 다음과 같다. 물론 여기 있는것만이 전부는 아니다.
books/book books/HNC/book books/colors/book books/HNC/cab/book :
이와 같은 XPath연산자는 여러종류가 있다.
|
|
|
|
| books/book (의 자식인 ) |
|
| books//title (의 후손중 모든
|
|