티스토리 뷰
지난번에 <xsl:value-of>를 살펴봤습니다.
XML 문서에서 하나의 값을 가져올 때 value-of를 사용하면 되는데요..
반복적으로 나타나는 엘리먼트를 처리할 때는 어떻게 해야 할까요?
바로 <xsl:for-each>를 활용해서 루프를 돌면서 처리하면 됩니다.
그럼.. for-each의 사용법을 살펴보도록 하지요..
<xsl:for-each> 엘리먼트
<xsl:for-each> 엘리먼트를 사용하면 XPath 형식으로 지정된 모든 XML 엘리먼트에 대해
값을 가져와서 처리할 수 있습니다.
말로 계속 설명하는 것보다 먼저 소스를 살펴보시죠..
이전 value-of의 예제와 거의 비슷합니다.
다만, 14, 19번째 줄에 <xsl:for-each> 구문이 포함된 것을 알 수 있습니다.
<xsl:for-each>는 루프를 처리하는 것이기 때문에 내부의 <tr>...</tr> 부분이 반복되는 것임을 쉽게 이해할 수 있겠죠.. ^^
<xsl:for-each>의 속성으로 select가 들어가 있는데요.. value-of와 마찬가지로 XPath 표현식을 사용하고 있습니다.
XPath에 대한 자세한 강좌는 XSLT이 끝나는대로 이어서 하려고 합니다.
결과를 확인해 보면 다음과 같이 나타납니다.
My CD Collection
Title | Artist |
---|---|
Empire Burlesque | Bob Dylan |
Hide your heart | Bonnie Tyler |
Greatest Hits | Dolly Parton |
Still got the blues | Gary More |
Eros | Eros Ramazzotti |
One night only | Bee Gees |
Sylvias Mother | Dr.Hook |
Maggie May | Rod Stewart |
Romanza | Andrea Bocelli |
When a man loves a woman | Percy Sledge |
Black angel | Savage Rose |
1999 Grammy Nominees | Many |
For the good times | Kenny Rogers |
Big Willie style | Will Smith |
Tupelo Honey | Van Morrison |
Soulsville | Jorn Hoel |
The very best of | Cat Stevens |
Stop | Sam Brown |
Bridge of Spies | T`Pau |
Private Dancer | Tina Turner |
Midt om natten | Kim Larsen |
Pavarotti Gala Concert | Luciano Pavarotti |
The dock of the bay | Otis Redding |
Picture book | Simply Red |
Red | The Communards |
Unchain my heart | Joe Cocker |
XML 파일 보기, XSL 파일 보기, 결과 보기
결과 필터링
위 예제에서는 catalog 하위의 모든 cd의 내용을 보여주고 있습니다.
for-each를 이용해 루프를 처리하더라도 이 중에 일부만 필터링해서 보여주고 싶을 경우도 있을 겁니다.
이럴 때 사용하는 방법을 잠깐 살펴보도록 하지요..
select 속성에서 XPath를 다음과 같은 형태로 사용하면 루프를 처리하는 범위를 제한할 수 있습니다.
<xsl:for-each select="catalog/cd[artist='Bob Dylan']">
기존에는 어떻게 썼는지 비교해 보도록 하죠..
<xsl:for-each select="catalog/cd">
[....] 이 부분이 추가된 겁니다. 그쵸..이것이 바로 필터라고 생각하면 됩니다.
내부 내용을 살펴보면 artist가 'Bob Dylan'인 cd만 가져와서 루프를 처리하라는 것으로 이해할 수 있을 겁니다.
여기에서는 = 연산자를 통해서 일치하는 것을 가져오도록 했는데요..
기본적으로 사용할 수 있는 연산자를 잠깐 설명하도록 하죠..
A = B (A와 B가 일치하는 것)
A != B (A와 B가 일치하지 않는 것)
A < B (A가 B보다 작은 것)
A > B (A가 B보다 큰 것)
< (작다), > (크다)와 같은 연산자를 사용하지 않는 것은 태그의 표시인 꺽쇠와 충돌이 나기 때문입니다.
그래서 < >를 사용하는 것이죠..
그럼.. 위 예가 적용된 스타일시트를 살펴볼까요?
결과는 다음과 같이 나타납니다.
어느덧 XSL 강좌가 중반으로 들어서고 있습니다. 그래도 내용이 쉬워서 모두들 따라오시기에는 어려움이 없을 거라고 생각합니다.
w3school의 내용이 쉽게 잘 정리되어 있는 것 같습니다.
그럼.. 좋은 하루 되세요~~
'XML Developer > XSL' 카테고리의 다른 글
XSLT <value-of> (0) | 2011.11.25 |
---|---|
XSLT <template> (0) | 2011.11.21 |
XSLT 변환(Transform) (0) | 2011.11.16 |
XSLT 소개 (0) | 2011.11.10 |
XSL에 대하여 (0) | 2011.11.08 |
댓글