xml 태그를 사용하기 위해서 페이지 상단에 다음과 같이 선언되어야 된다.
<%@ taglib uri="http://java.sun.com/jstl/xml" prefix="x"%>
xml 태그는 다음과 같은 것들이 있다.
| 기능 | 태그 | prefix |
|---|---|---|
| 기본 | out, parse, set | x |
| 흐름 제어 | choose (when, otherwise), forEach, if | x |
| 변환 | transform (param) | x |
XPath : xml 소스 트리의 정확한 위치를 지정해주기 위한 경로지정 문법이며 XSLT와 XPointer 를 위해서 만들어진 것이다. xml 엘리먼트들을 노드(node) 로 접근.
XPath에 지정한 패턴에 따라 xml내용을 출력.
| <x:out select="XPathExpression" [escapeXml="{true|WEBSTUDY:false}"]/> |
xml문서를 읽어서 파싱.
| <x:parse xml="XMLDocument" {var="var" [WEBSTUDY:scope="scopeName"]\ | varDom="var" [WEBSTUDY:scopeDom="scopeName"]} [WEBSTUDY:systemId="systemId"] [WEBSTUDY:filter="filter"]/> |
XPath에 따라 선택된 내용을 변수에 저장.
| <x:set select="XPathExpression" var="varName" [scope="{page\ | WEBSTUDY:request|session|application}"]/> |
<c:if/> 태그와 마찬가지로 xml태그에도 <x:if/> 가 있고 형식은 <c:if/> 태그와 유사.
| <x:if select="XPathExpression" var="varName" [scope="{page\ | WEBSTUDY:request|session|application}"]/> |
<c:choose/> 태그와 마찬가지로 xml태그에도 <x:choose/> 가 있고 형식은 <c:choose/> 태그와 유사.
| <x:choose> <x:when select="XPathExpression"> body content </x:when> ..... <x:otherwise> conditional block </x:otherwise> </x:choose> |
<x:forEach/> 태그는 XPath에 따라서 해당하는 엘리먼트 수만큼 반복.
| <x:forEach [WEBSTUDY:var="varName"] select="XPathExpression"> body content </x:forEach> |
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/xml" prefix="x" %>
<% response.setContentType("text/html;"); %>
<%-- 파라메터 받아서 출력 --%>
<c:if test="${!empty param.name}">
param: <x:out select="$param:name"/>
</c:if>
<form>
name: <input type="text" name="name">
<input type="submit">
</form>
<hr>
<%-- xml 데이터를 xdata 변수에 할당 --%>
<x:parse var="xdata">
<namecard>
<person>
<name>허광남</name>
<id>남자</id>
<email>kenu@email.com</email>
<phone>111-2222-3333</phone>
</person>
<person>
<name>노재춘</name>
<id>남자</id>
<email>suribada@email.com</email>
<phone>222-3333-4444</phone>
</person>
<person>
<name>이선재</name>
<id>남자</id>
<email>hsboy@email.com</email>
<phone>333-4444-5555</phone>
</person>
</namecard>
</x:parse>
<%-- XPath 를 이용해서 xdata에서 추출 --%>
<x:out select="$xdata//person[1]/name"/>
<x:out select="$xdata//person[last()]/name"/>
<hr>
<%-- person 으로 반복해서 email과 phone 출력 --%>
<table border="1">
<x:forEach select="$xdata//person">
<tr><td><x:out select="email" /></td>
<td><x:out select="phone" /></td></tr>
</x:forEach>
</table>
<x:transform/> 태그는 xml과 xslt 파일을 결합해서 새로운 형식의 문서를 생성.
<x:param/> 태그는 xml의 파라메터를 지정한다.