[출처 : 미니의 XML DeveloperGroup (http://www.word.pe.kr)]
프로그래밍에서 가장 기본적으로 나오는 조건문이 바로 IF죠..
XSLT에서도 if문을 사용해서 조건을 처리할 수 있습니다. 이런 if문에 대해서 한번 살펴보도록 하죠
<xsl:if> 엘리먼트
XML 문서 내용에 대해 IF 조건절을 사용하기 위해서는 XSL에서 <xsl:if>를 사용하면 됩니다.
<xsl:if>를 사용하는 구문은 다음과 같습니다.
<xsl:if test="expression">
...
...some output if the expression is true...
...
</xsl:if>
<xsl:if>에서 조건을 입력하는 부분은 바로 test="expression"입니다.
expression은 바로 XML 문서 내부를 탐색할 수 있는 XPath 문 이겠죠..
그렇다면 <xsl:if> 엘리먼트의 위치는 어디에 둬야 할까요?
<xsl:sort>와 마찬가지로 XSL 내의 <xsl:for-each> 내부에 두면 됩니다.
말보다는 예제를 먼저 보시죠~
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<xsl:if test="price > 10">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:for-each> 내부의 15번째 줄에 <xsl:if> 구문이 추가되어 있는 것을 확인할 수 있습니다.
몇가지 시사하는 바를 살펴보면 다음과 같습니다.
첫째, test 속성에 보면 조건식이 들어가 있습니다.
조건식을 살펴보면 "price > 10" 와 같이 나타나 있습니다.
> 는 > 기호를 나타내는데요.. XSL에서는 > 기호가 닫는 꺽쇠로 인식되기 때문에 엔터티 표현을 이용한 거죠..
그리고 price는 XML 문서의 cd 하위의 엘리먼트라고 보면 되겠죠..
즉, price가 10보다 큰 엘리먼트만 출력하라는 이야기 인 겁니다.
둘째, <xsl:sort>에서는 </xsl:sort> 구문을 사용하지 않고 <xsl:sort select="artist"/>와 같은 형식으로 사용했죠..
반면에 <xsl:if>는 범위를 제한하기 위해 </xsl:if>를 사용합니다.
프로그래밍에서 if { } 와 같은 } 부분이 </xsl:if>라고 보면 되겠죠..
참고로 <xsl:sort>에서는 select 속성을 <xsl:if>에서는 test 속성을 사용한다는 것을 기억해 두세요..
결과를 확인해 보면 다음과 같이 나타납니다.
My CD Collection
| Title | Artist |
|---|---|
| Empire Burlesque | Bob Dylan |
| Still got the blues | Gary Moore |
| One night only | Bee Gees |
| Romanza | Andrea Bocelli |
| Black Angel | Savage Rose |
| 1999 Grammy Nominees | Many |
간단하게 <xsl:if>를 살펴봤습니다.
아마도 여러분이 XSL을 이용한 작업을 할 때, 많이 사용하게 될 거라 봅니다.
구문이나 사용법을 잘 확인해 두세요
그럼.. 좋은 하루 되세요~~ from 미니










프로그래밍언어

XML 


