본문 바로가기

XML

xsl 문법을 이해하는 예제

xsltest.xsl


<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<html>

<head>

<title>가계부</title>

</head>

<body>

<p style="margin: auto;">** XML 가계부 **</p>

<xsl:apply-templates select="가계부"/>

</body>

</html>

</xsl:template>

<xsl:template match="가계부">

<xsl:apply-templates select="상품목록"/>

</xsl:template>

<xsl:template match="상품목록">

<table width="500" border="1" style="text-align:center; margin: auto;">

<tr>

<td colspan="2">날짜 <xsl:value-of select="날짜"/></td>

<td colspan="2">수입가 <xsl:value-of select="수입"/></td>

</tr>

<tr style="background:yellow">

<th>번호</th><th>상품</th><th>가격</th><th>장소</th>

</tr>

<xsl:for-each select="상품">

<tr>

<td><xsl:number value="position()" format="1"/> </td> <!-- psition() : 순서를 반환 -->

<td><xsl:value-of select="물품명"/></td>

<td><xsl:value-of select="물품가격"/></td>

<td><xsl:value-of select="구입장소"/></td>

</tr>

</xsl:for-each>

<tr>

<td>건수</td>

<td colspan="3"><xsl:value-of select="count(.//상품)"/></td>

</tr>

<tr>

<td>지출</td>

<td colspan="3"><xsl:value-of select="sum(.//물품가격)"/></td>

</tr>

<tr>

<td>잔고</td>

<td colspan="3">

<xsl:choose>

<xsl:when test="./수입 - sum(.//물품가격) > 0">

<xsl:value-of select="./수입 - sum(.//물품가격)"/>

</xsl:when>

<xsl:otherwise>

<span style="color:red">

<xsl:value-of select="./수입 - sum(.//물품가격)"/>

</span>

</xsl:otherwise>

</xsl:choose>

</td>

</tr>

</table> 

</xsl:template>

</xsl:stylesheet>


===============================================================================================================

xmltest.xml


<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="account_book.xsl" ?>

<가계부>

<상품목록>

<날짜>2014년 4월 4일</날짜>

<수입>1</수입>

<상품>

<물품명>스타벅스 컵</물품명>

<물품가격>3000</물품가격>

<구입장소>종로3가점</구입장소>

</상품>

<상품>

<물품명>종이컵</물품명>

<물품가격>500</물품가격>

<구입장소>다이소</구입장소>

</상품>

<상품>

<물품명>물컵</물품명>

<물품가격>300</물품가격>

<구입장소>다이소2</구입장소>

</상품>

</상품목록>

</가계부>



==================

==================


실행은 xml로 실행