JSP에서 XML 데이터를 다룰 때 XPath 표현식을 손쉽게 검증하고 싶다면 JSTL의 <x:if> 태그를 활용하면 됩니다. 이 태그는 지정된 XPath 테스트 표현식을 평가한 뒤, 결과가 참(true)이면 태그 내부의 본문(body)을 실행합니다. 반대로 조건이 거짓(false)이면 본문은 아무런 처리 없이 무시됩니다.
<x:if> 태그의 주요 속성
<x:if> 태그는 다음과 같은 속성을 제공합니다.
| 속성 | 설명 | 필수 여부 | 기본값 |
|---|---|---|---|
| select | 평가할 XPath 표현식 | 필수 | 없음 |
| var | 조건 평가 결과를 저장할 변수의 이름 | 선택 | 없음 |
| scope | var 속성으로 지정한 변수의 유효 범위(scope) | 선택 | Page |
사용 예제
다음은 <x:if> 태그의 실제 사용 예입니다. XML 문서를 파싱한 후 두 가지 조건을 각각 검사하는 방식으로 작성되었습니다.
<%@ taglib prefix = "c" uri = "https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "x" uri = "https://java.sun.com/jsp/jstl/xml" %>
<html>
<head>
<title>JSTL x:if Tags</title>
</head>
<body>
<h3>Books Info:</h3>
<c:set var = "xmltext">
<books>
<book>
<name>Padam History</name>
<author>ZARA</author>
<price>100</price>
</book>
<book>
<name>Great Mistry</name>
<author>NUHA</author>
<price>2000</price>
</book>
</books>
</c:set>
<x:parse xml = "${xmltext}" var = "output"/>
<x:if select = "$output//book">
Document has at least one <book> element.
</x:if>
<br />
<x:if select = "$output/books[1]/book/price > 100">
Book prices are very high
</x:if>
</body>
</html>위 코드의 핵심 흐름을 살펴보면 다음과 같습니다.
- c:set 태그로 도서 정보를 담은 XML 문자열을 변수에 저장합니다.
- x:parse 태그로 해당 문자열을 파싱하여
output변수에 XML 문서로 저장합니다. - 첫 번째 x:if는
$output//book경로에 요소가 존재하는지 확인합니다. - 두 번째 x:if는 첫 번째 책의 가격이 100보다 큰지 비교 연산자(>)로 검사합니다.
이제 위 JSP 페이지에 접속하면 다음과 같은 결과가 화면에 출력됩니다.
Books Info: Document has at least one <book> element. Book prices are very high
두 조건이 모두 참으로 평가되었기 때문에 각 <x:if> 블록의 메시지가 정상적으로 출력된 것을 확인할 수 있습니다. 이처럼 <x:if> 태그를 사용하면 JSP 환경에서도 별도의 자바 코드 작성 없이 XPath 표현식을 간편하게 테스트하고 조건 분기를 처리할 수 있습니다.