XSL은 XML 데이터를 화면에 그려주기 위해 사용된다.
현재 투입되어있는 프로젝트에서 XSL을 이용해 화면을 그리는 케이스가 종종 있는데,
ajax로 back단에서 XML 방식으로 리턴받은 데이터를 XSL로 그리는 방식이다.
XSL(XSL (eXtensible Stylesheet Language)
- XML문서를 화면에 그려주기 위한 언어
- XML 문서이다.
XML 예제 데이터
<results>
<proRoot>
<affectedrow>3</affectedrow>
<totalrow>3</totalrow>
<totalpage>0</totalpage>
<data>
<seq>1</seq>
<price>186200</price>
<typeCd>14C</typeCd>
<testSeq>2</testSeq>
<lastname>CHEON</lastname>
<firstname>DANBI</firstname>
<name>CHEON / DANBI</name>
<city>인천 - 암스테르담</city>
<totalPrice>186200</totalPrice>
<statusLabel>미결제</statusLabel>
</data>
</proRoot>
</results>
<XSL:PARAM>
XSL호출시 parameter로 데이터로 XSL 문서에서는 아래와같이 선언된다.
<xsl:param name="key" />
실제 사용 예
<input name="keyNo" type="hidden" value="{$key}" />
<xsl:value-of select="$key"/>
<XSL:TEMPLATE>
중복되는 요소들을 묶어서 템플릿으로 만들어두는 태그이다.
<xsl:template name="bodyTemplate">
<xsl:param name="list" />
<xsl:param name="totalCount" />
<xsl:param name="detail" />
<xsl:for-each select="$list" >
<tr>
<td><xsl:value-of select="city" /></td>
<td><xsl:value-of select="name" /></td>
<td><xsl:value-of select="statusLabel" /></td>
<td class="k1_tar"><strong><xsl:value-of select="format-number(totalPrice,'###,##0')" />원</strong></td>
</tr>
</xsl:for-each>
</xsl:template>
호출시에는 아래와같이 사용한다.
<xsl:call-template name="bodyTemplate">
<xsl:with-param name="list" select="$list" />
<xsl:with-param name="totalCount" select="$totalCount" />
<xsl:with-param name="detail" select="$detail" />
</xsl:call-template>
<XSL:VARIABLE>
XSL내에서 사용할 변수를 새롭게 정의하여주는것이다.
JSTL로 치면 C:SET과 같다고 보면 된다.
<xsl:variable name="list" select="//result//data" />
이렇게 정의된 변수는 XSL:PARAM과 동일하게 사용할 수 있다
<xsl:value-of select="$list"/>
<XSL:ATTRIBUTE>
ATTRIBUTE의 경우 HTML 속성을 추가할때 사용하는데, 특정 케이스에만 속성을 표시해주어야 할때 주로 많이 사용한다.
<li>
<xsl:attribute name="class">
<xsl:if test="$key ='S'">tab_on</xsl:if>
</xsl:attribute>
</li>
위와 같이 ssKey parameter가 S일때만 li태그의 tab_on class를 추가하고 싶을때 사용한다.
ssKey parameter가 S일때 적용된 html 태그는 아래와같다.
<li class="tab_on"><li>
JSTL로 치면 아래 내용과 같다고 보면 된다.
<li class="${key eq 'S' ? 'tab_on' : ''}"></li>
'개발' 카테고리의 다른 글
[javascript] 카카오지도 api 지도에 마커 표시하기 (0) | 2021.05.12 |
---|---|
[SPRING] Cacheable annotation을 사용하여 공통코드 관리하기 (0) | 2021.05.07 |
[솔라리스 ] vi 편집기 주요 명령어 (0) | 2021.04.29 |
[DBEAVER] 쿼리자동정렬 / 단축키 변경 (0) | 2021.04.25 |
dbeaver auto commit 설정 해제하기 / 오라클 데이터 롤백하기 (0) | 2021.04.23 |
댓글