일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 원펀맨
- html
- array
- Java
- url 치환
- 모바일게임
- React
- JSTL
- forEach
- 맛집
- 리액트
- 이름 마스킹
- table
- 자바스크립트
- 개발
- set
- JavaScript
- 자바
- Oracle
- 오라클
- 스프링
- 형변환
- jQuery
- spring
- 원펀맨: 최강의 남자
- SQL
- JS
- 배열
- url 변환
- JSX
Archives
- Today
- Total
특별한 일상
[jsp/servlet] JSTL 사용법 : XML 태그 <x: 본문
반응형
오늘은 JSTL(표준 태그 라이브러리) 에서 XML 태그 라이브러리에 대한 사용법을 알아 보겠습니다.
XML 태그 라이브러리를 사용하려면 앞서서 상단 선언에 이와 같이 선언한다.
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
※ XML 태그 라이브러리
XML 태그에 들어가기전에 XPath라는 것을 이해해야 합니다.
XPath는 xml 소스트리의 위치를 지정해주기 위한 경로지정 문법으로 XSLT와 XPointer를 위해서 만들어진 것입니다.
'/' 절대경로, '//' 모든영역선택
기능 분류 | 태그 | 설명 |
기본 기능 | out | XPath에 지정된 패턴에 따라 xml 내용을 출력. |
parse | xml 문서를 읽어서 파싱. | |
set | XPath에 따라 선택된 내용을 변수에 저장. | |
흐름 제어 | choose | 다중 조건을 처리할때 사용. |
forEach | 콜렉션이나 Map의 각 항목을 처리할 때 사용. | |
if | 조건에 따라 내부 코드를 수행. | |
변환 기능 | transform | xml과 xslt 파일을 결합해서 새로운 문서를 생성. |
1. 기본 기능 태그
1-1. <x:out> 태그
<x:out select="XPathExpression" [escapseXml="(true|false)"] />
---ex>
<x:out select="$param:phone">
<%--
request.getParameter("phone")
${param.phone}
XPath 통한 내장객체 접근 표현
$param:phone
--%>
1-2. <x:parse> 태그
/* String 또는 Reader 객체로 지정된 XML 문서에서 */
<x:parse xml="XMLDocument" {[var="변수"] [scope="영역"]
|[varDom="DOM변수"] [scopeDom="DOM영역"]}
[systemId="시스템ID"] [filter="필터"] />
<x:parse xml="XMLDocument" ... >파싱할XML문서</x:parse>
<%-- body 내용을 지정된 XML 문서에서는
xml="XMLDocument"를 제거한다
DOM영역은
page, request, session, application 중 하나
--%>
---ex>
<x:parse var="objParam">
<phones>
<info>
<num>01011112222</num>
<id>data1</id>
</info>
<info>
<num>01012341234</num>
<id>data2</id>
</info>
</phones>
</x:parse>
<%-- xml 데이터를 objParam 변수에 할당 --%>
<c:out select="$objParam//info[1]/num" />
<c:out select="$objParam//info[last()]/num" />
<%-- XPath를 이용해 objParam에서 추출 --%>
1-3. <x:set> 태그
<x:set select="XPathExpression" [var"변수"] [scope="영역"] />
<%-- 영역은 page, request, session, application 중 하나
--%>
<%-- 선택된 내용을 변수에 저장하는것.
변환기능 transform 태그 예제로 대체
--%>
2. 흐름 제어
2-1. <x:choose> 태그( <x:when> <x:otherwise> )
<x:choose>
<x:when select="XPathExpression">
...
</x:when>
<x:when select="XPathExpression">
...
</x:when>
<x:otherwise>
...
</x:otherwise>
</x:choose>
<%-- 조건1 true면 조건1의 내부 블록 수행,
조건1 false, 조건2 true면 조건2 내부 블록 수행,
조건1 false, 조건2 false면 otherwise 내부 블록 수행 --%>
2-2. <x:forEach> 태그
/* XPath에 따라 해당하는 자원 수만큼 반복(for) */
<x:forEach [var="변수"] select="XPathExpression">
...
</x:forEach>
---ex>
<x:parse var="objParam">
...
</x:parse>
<x:forEach select="$objParam//info">
...
<tr>
<td><input type="text"><x:out select="num" /></input></td>
</tr>
</x:forEach>
<%-- parse로 선언된 objParam에
num을 가져와 쓴다. --%>
2-3. <x:if> 태그
<x:if select="XPathExpression" var="변수" [scope="영역"] />
<x:if select="XPathExpression" var="변수" [scope="영역"]>
...
조건 영역
</x:if>
<%-- 영역은 page, request, session, application 중 하나
--%>
3. 변환 기능
3-1. <x:transform> 태그 ( <x:param> )
/* body없음 */
<x:transform xml="XMLDocument" xslt=XSLTSylesheet"
[xmlSystemId="XMLSystemId"] [xsltSystemId="XSLTSystemId"]
[{var="변수" [scope="영역"]|result="결과"}] />
/* 변환파라미터 <x:param /> */
<x:transform xml="XMLDocument" xslt=XSLTSylesheet"
[xmlSystemId="XMLSystemId"] [xsltSystemId="XSLTSystemId"]
[{var="변수" [scope="영역"]|result="결과"}]>
...
<x:param/>
</x:transform>
/* xml="XMLDocument"제거 ,
선택적 변환 파라미터 xml문서옵션 <x:param /> */
<x:transform xslt=XSLTSylesheet"
xmlSystemId="XMLSystemId" xsltSystemId="XSLTSystemId"
[{var="변수" [scope="영역"]|result="결과"}]>
XMLDocument Optional
<x:param/>
</x:transform>
<%--
<x:param name="obj" value="objVal" />
--%>
---ex>
<html>
<c:set var="xml">
<?xml version="1.0" encoding="utf-8"?>
<info>
<phone>
<num>01012341234</num>
...
</phone>
</info>
</c:set>
<c:set var="xsl">
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Trasform"
version="1.0">
<xsl:template match="/">
...
<xsl:for-each select="info/phone">
<tr>
<td><xsl:value-of select="num" /></td>
...
</tr>
<xsl:for-each>
</xsl:stylesheet>
</c:set>
<x:transform xml="${xml}" xslt="${xsl}"/>
<%-- info.xml, info.xsl 파일을 직접 선언
--%>
---ex2>
<c:import var="xml" url="info.xml" charEncoding="utf-8" />
<c:import var="xsl" url="info.xsl" charEncoding="utf-8" />
<x:transform xml="${xml}" xslt="${xsl}"/>
<%-- 코어 태그를 이용해 간접 선언
--%>
솔직히 XML 태그는 잘 사용해 본적도 없고, 참고할만한 책이나 문서가 적기 때문에
API 문서를 통해 더 자세하게 알아봤으면 좋겠다.
'IT•개발 끄적 > Jsp&Servlet' 카테고리의 다른 글
[jsp/servlet] JSTL 사용법 : 국제화 태그 <fmt: (0) | 2021.05.03 |
---|---|
[jsp/servlet] JSTL 사용법 : 코어 태그 <c: (0) | 2021.04.21 |
[jsp/servlet] JSTL 사용법 및 선언 (0) | 2021.04.21 |
Comments