본문 바로가기
개발

[XSL 기본문법] TEMPLATE, PARAM, ATTRIBUTE, VARIABLE

by 정보알려주는언니 2021. 4. 26.

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>

 

 


댓글