'XML Developer/XSL'에 해당되는 글 6건

  1. 2011/11/30 XSLT <for-each>
  2. 2011/11/25 XSLT <value-of>
  3. 2011/11/21 XSLT <template>
  4. 2011/11/16 XSLT 변환(Transform)
  5. 2011/11/10 XSLT 소개
  6. 2011/11/08 XSL에 대하여

XSLT <for-each>

|


지난번에 <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

TitleArtist
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 &lt; B (A가 B보다 작은 것)
A &gt; B (A가 B보다 큰 것)
 
< (작다), > (크다)와 같은 연산자를 사용하지 않는 것은 태그의 표시인 꺽쇠와 충돌이 나기 때문입니다.
그래서 &lt; &gt;를 사용하는 것이죠..



 
그럼.. 위 예가 적용된 스타일시트를 살펴볼까요?


결과는 다음과 같이 나타납니다.

My CD Collection

TitleArtist
Empire Burlesque Bob Dylan
어느덧 XSL 강좌가 중반으로 들어서고 있습니다. 그래도 내용이 쉬워서 모두들 따라오시기에는 어려움이 없을 거라고 생각합니다.
w3school의 내용이 쉽게 잘 정리되어 있는 것 같습니다.
 
그럼.. 좋은 하루 되세요~~
크리에이티브 커먼즈 라이선스
Creative Commons License

'XML Developer > XSL' 카테고리의 다른 글

XSLT <for-each>  (0) 2011/11/30
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




Trackback 0 And Comment 0

XSLT <value-of>

|



이제 value-of에 대해서 살펴봅시다.
 
<xsl:value-of> 엘리먼트
 
<xsl:value-of> 엘리먼트는 XML 엘리먼트의 값을 추출하는데 사용합니다.
value-of로 가져온 값을 출력할 부분에 추가하면 되겠죠..
 
이렇게 하면 XML 문서의 엘리먼트 값에 따라 HTML 출력 결과를 만들어 낼 수 있을 겁니다.



15, 16번째 줄을 보면 value-of를 사용한 것을 알 수 있습니다.
여기에 보면 select라는 속성을 사용하고 있는데.. select의 값으로는 XPath 표현을 사용하고 있습니다.
XPath는 유닉스, 리눅스에서 디렉토리를 탐색하는 것처럼 슬래시(/) 형태로 구분해 나타냅니다.
 
15번째 줄은 catalog 하위의 cd 하위의 title 엘리먼트의 값을 가져오는 겁니다.
마찬가지로 16번째 줄은 catalog 하위의 cd 하위의 artist 엘리먼트의 값을 가져옵니다.
 
원문 XML을 보시면 해당 엘리먼트가 중첩되어 있는 것을 확인할 수 있을 겁니다.
 
결과를 확인해 보면  다음과 같이 나타납니다.

My CD Collection

Title Artist
Empire Burlesque Bob Dylan

XML 파일 보기, XSL 파일 보기, 결과 보기
 
이전 강좌의 Template에 비해 XML에 의해서 결과 화면이 변경된 것을 알 수 있습니다.
 
그런데 이상한 점이 있지 않나요?
XML 파일을 보면 Title이나 Artist가 여러개 있는데.. 결과보기에서는 단지 하나만 나타납니다.
왜 그럴까요?
 
XSL을 보면 한번만 <xsl:value-of>를 호출하도록 설정되어 있기 때문입니다.
음.. 그럼 루프를 돌아아만 제대로 전체 데이터가 나올 수 있다는 것을 눈치 챘을 겁니다. ^^
 
바로 다음 시간에는 <xsl:for-each>를 통해 XSL에서 루프를 처리하는 부분을 살펴보기로 하지요..
 
그럼.. 좋은 하루 되세요~~ from 미니


크리에이티브 커먼즈 라이선스
Creative Commons License

'XML Developer > XSL' 카테고리의 다른 글

XSLT <for-each>  (0) 2011/11/30
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




Trackback 0 And Comment 0

XSLT <template>

|



XSLT에서 사용하는 템플릿이라는 것을 살펴볼 시간입니다.
 
XSLT는 템플릿이라고 하는 규칙을 하나 이상 포함하고 있구요.. 각각의 템플릿은 일치하는 노드를 찾았을 때, 해당 규칙을 적용하는 겁니다.
 
<xsl:template> 엘리먼트
 
템플릿을 만들기 위해 사용하는 것이 바로 <xsl:template> 엘리먼트입니다.
 
요 템플릿에는 match라는 속성이 반드시 사용되는데요.
XML 엘리먼트 중 어느 곳에 템플릿을 적용할지 결정하기 위해 사용하는 겁니다.
 
XML 엘리먼트 중에 어느 곳이란 것을 찾기 위해서 무엇을 할까요?
음.. 지난번에 XML 내부를 탐색하기 위해 뭘 사용한다고 했던 것 같은데.. ^^
 
맞습니다. 바로 XPath죠...
XPath 표현식을 match 속성의 값으로 사용하는 겁니다.
 
만약 match값이 "/"이면 XML 문서 전체를 나타내는 겁니다. /는 루트 엘리먼트이니까요..
 
자.. 그럼 앞에서 살펴본 XSL 파일을 간략화 해서 다시 살펴보죠~



XSL 스타일시트도 XML 문서이므로 XML 선언이 포함되어야 합니다.
첫 번째 줄을 보면 <?xml version="1.0" encoding="ISO-8859-1"?>로 나와 있는 걸 볼 수 있습니다.
 
두 번째 줄에 <xsl:stylesheet> 엘리먼트가 보입니다.
이 XML 문서는 XSLT 스타일시트라는 것을 알려주는 겁니다.
속성으로 버전과 네임스페이스를 지정하고 있네요~
 
드디어 5번째 줄에 <xsl:template>엘리먼트가 나왔습니다.
match를 봐야겠죠.. 옹!! match="/" 이네요..
 
음.. XML 소스의 루트 엘리먼트부터 이 템플릿을 적용하면 되는 것 같습니다.
ㅋㅋ 앞에서 미리 다 설명한 내용이 다시 나오구 있네요.. -.- (뻘쭘~)
 
템플릿 내부를 보면, 일반 HTML로 되어 있는 것을 알 수 있습니다.
XML 문서를 가져와서 보여주는 건 아니네요.. ^^
 
</xsl:template> </xsl:stylesheet>는 닫는 태그.. XML에서는 반드시 써줘야 하는 거 알고 계시죠.. ^^
 
위 스타일시트를 적용하면 모든 문서는 다음과 같이 나타납니다.
 

My CD Collection

Title Artist
. .


이 XSL 스타일시트를 적용하면 모든 문서에 저렇게 나타날까요?
네..그렇습니다.~
 
동적으로 변환하려면 XML에서 무언가 값을 가져오는 부분이 있어야 하는데..
그 부분이 없는 것이죠..
 
그럼 XML 문서에서 엘리먼트나 속성의 값을 가져오는 것은??
 
바로 <xsl:value-of>입니다. 요걸 다음 시간에 한번 정리해 보도록 하지요~~
 
그럼.. 좋은 하루 되세요.


크리에이티브 커먼즈 라이선스
Creative Commons License

'XML Developer > XSL' 카테고리의 다른 글

XSLT <for-each>  (0) 2011/11/30
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




Trackback 0 And Comment 0

XSLT 변환(Transform)

|



XML을 XSLT를 이용해서 어떻게 XHTML로 변환하는지 함 살펴볼 예정입니다.
여기에서는 큰그림으로 이해를 하시고, 세부사항은 다음 강좌에서 보다 자세히 다루도록 하겠슴다.

스타일시트 선언

XSL 스타일시트 문서도 XML로 구성되어 있습니다.
그러므로 XML의 기본인 루트 엘리먼트라는 것이 존재해야 합니다.
XSL 스타일시트의 루트엘리먼트는 <xsl:stylesheet> 또는 <xsl:transform>입니다.

왜 두가지를 사용하냐구요?
글쎄요~ 실제로 <xsl:stylesheet>나 <xsl:transform>모두 동일하게 사용됩니다.
그러므로 둘 중의 아무거나 쓰셔도 상관없습니다.

보통은 <xsl:stylesheet>를 사용합니다. 이걸 주로 쓰세요.. ^^

그럼 W3C의 권고안을 따르는 XSL 스타일시트 선언을 살펴보면 다음과 같습니다.

또는

xmlns라고 정의되어 있는 부분이 있습니다. 요건 XML 네임스페이스를 정의하는 겁니다.
xmlns:xsl을 정의함으로써 XSLT 엘리먼트, 속성에 접근할 수 있게 되는 겁니다. 

xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 은 W3C의 공식적인 XSLT 네임스페이스입니다.
그리고 이 네임스페이스의 경우 version="1.0"을 사용합니다. 

이 네임스페이스를 보면 XSLT가 1999년에 공식 발표되었다는 것을 어렴풋이 짐작할 수 있을 겁니다.
1999년 11월 16일에 W3C에서 Recommendation을 발표했었슴다. 

참고로 W3C의 표준안을 만드는 순서를 말씀드리면..  다음과 같습니다.

Notes -> Working Draft -> Candidate Recommendation -> Proposed Recommendation -> Recommendation




예제 XML 파일

자.. 그럼 앞으로 예제로 살펴볼 XML 파일에 대해 설명드리도록 하겠습니다.
cdcatalog.xml 파일을 XSLT 변환을 위한 예제로 사용할 겁니다.  

문서는 간단합니다. 루트엘리먼트로 <catalog>가 있구요..
그 하위에 <cd>가 반복되는 형태입니다.
<cd> 엘리먼트에는 title, artist, country, company, price, year 정보가 포함되어 있습니다. 

음.. XML 문서에 대한 내용은 제가 XML 기초강좌에서 이미 설명을 했기 때문에
여기서 더 이상 언급하지는 않겠습니다.

아래 링크를 누르면 사용할 XML 문서를 확인할 수 있습니다.

cdcatalog.xml 파일 보기

XSL 스타일시트 생성

이제 위 XML 문서를 HTML 형식으로 출력하기 위한 XSL 스타일시트(cdcatalog.xsl)를 만들어보겠습니다.
xsl:template로 구성하면 되는데요.. 소스는 다음과 같습니다.

<html> 태그들이 나오는 걸로 봐서 HTML 형태로 변환한다는 것을 알 수 있을 겁니다.
중간에 <xsl:for-each> 태그도 보이네요.. 루프를 돌면서 <table> 태그의 각 항목을 만들고 있습니다. ^^

보다 자세한 소스 설명은 강좌로 계속 진행하도록 하구요..
일단 위에서 설명한 XSL 스타일시트 선언부분이 제대로 되어 있는지 확인해 보시기 바랍니다.

cdcatalog.xsl 파일 보기

XML 문서에 XSL 스타일시트 연결

이제 XML문서 cdcatalog.xml에 XSL 스타일시트를 연결해 보도록 하겠습니다.

2번째 줄에 <?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?> 이 부분이 연결을 선언한 곳이네요.. 




이제 결과 화면을 보겠습니다. 투박하기는 하지만 HTML 테이블 형식으로 잘 나올 겁니다. 

최종 결과 보기 

간단히 XSL 스타일시트를 선언하고 XML에 연동하는 것을 살펴봤습니다.
이제 다음에는 XSL 스타일시트의 내부로 들어가 볼 계획입니다.

 

 

크리에이티브 커먼즈 라이선스
Creative Commons License

'XML Developer > XSL' 카테고리의 다른 글

XSLT <for-each>  (0) 2011/11/30
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




Trackback 0 And Comment 0

XSLT 소개

|



이번에는 XSLT에 대해서 간략히 살펴보려고 합니다.

XSLT와 XSL-FO가 있는데요.. 
XSLT는 XML문서를 다른 XML 문서로 바꾸는 것을 이야기 하구요. 
XSL-FO는 XML 문서를 다른 문서(PDF, DOC 등)로 바꾸는 것을 이야기 합니다. 
즉, FO는 Formatting Object의 약자이네요.. 
 
XSLT란?
 
- XSLT는 XSL Transformation을 의미합니다.
- XSLT는 XSL의 가장 중요한 부분입니다.
- XSLT는 XML 문서를 다른 XML 문서로 변환합니다.
- XSLT는 XML 문서를 탐색하기 위해서 XPath를 사용합니다.
- XSLT는 W3C의 표준입니다.
 
계속해서 반복되는 말들입니다. 자꾸 듣다 보면 익숙해지겠죠.. ^^
 
XSLT = XSL Transformations
 
지난번에 XSL은 세 가지 부분으로 구성되어 있다고 했습니다.
XSLT, XPath, XSL-FO...
 
이 중에서 XSLT가 가장 중요한 부분이라고 할 수 있습니다.
 
XSLT는 XML 문서를 다른 XML 문서로 변환하기도 하구요..
브라우저가 인식할 수 있는 XHTML이나 HTML과 같은 문서로 변환하기도 합니다.
 
보편적으로 XSLT를 XML 문서를 (X)HTML 문서로 변환하는데 많이 사용하고 있습니다.
 
그럼.. 변환이라는 것은 무엇을 한다는 것일까요?
XML 문서에 새로운 엘리먼트나 속성을 추가/삭제할 수도 있구요.
기존의 엘리먼트를 재정렬 할 수도 있구, 특정 엘리먼트를 보여줄지 말지 테스트를 통해서 결정할 수도 있습니다.
 
보다 정확하게 말하면, XSLT는 XML 소스 트리 구조를 XML 결과 트리 구조로 변환하는 겁니다.

 
XSLT는 XPath를 활용
 
XSLT는 XML 문서 내부의 정보를 검색하기 위해서 XPath를 사용합니다.
XPath는 XML 문서의 엘리먼트나 속성을 탐색하기 위해 사용되는 표준을 말합니다.
 
요~ XPath는 예전 강좌에서도 조금 다뤘는데요..
XSLT에 대한 이야기가 완료되면 살펴보기로 하죠.. 
 



XSLT의 동작 방법
 
XSLT에서는 템플릿이라는 것을 사용하는데요..
이 템플릿과 일치하는 엘리먼트나 속성들을 찾습니다.
뭘로 찾을까요?
당연히 XPath로 검색하겠죠.. ^^
(엘리먼트나 속성들이라고 표현한 것은 여러개를 찾을 수도 있기 때문입니다.)
 
템플릿과 일치하는 엘리먼트나 속성들이 있으면,
XML 결과 트리 구조에 따라서 이 부분을 변경하게 됩니다.
 
이런 역할을 하는 것이 바로 XSLT 프로세서입니다.
 
그럼 대표적인 XSLT 프로세서는 무엇이 있을까요?
바로 웹 브라우저입니다.
 
XSLT 브라우저들
 
모질라 파이어폭스 (Mozilla Firefox)
요즘 불여우를 사용하시는 분들이 점차 늘어나고 있는데요..
파이어폭스는 버전 1.0.2부터 XML과 XSLT를 지원하고 있습니다.
 
모질라 (Mozilla)
모질라는 XML 파싱 모듈을 포함하고 있는데요..
기본적으로 XML과 CSS를 지원한다고 합니다. 또한 네임스페이스도 지원하구요..
 
XSLT에 대한 구현도 할 거라고 되어있는데요..
이미 구현하지 않았을까 하네요.. ^^
 
넷스케이프 (Netscape)
넷스케이프 버전 8부터 모질라와 동일한 엔진을 사용하고 있다고 합니다.
그럼.. 위와 같겠죠
 
오페라 (Opera)
버전 9부터 XML과 XSLT, CSS를 지원한다고 합니다.
버전 8은 XML과 CSS만 지원했다고 하네요..
 
인터넷 익스플로러 (Internet Explorer)
버전 6부터 XML, 네임스페이스, CSS, XSLT, XPath를 지원하고 있습니다.
IE 버전 5는 W3C의 표준이 아닌 자기들만의 XML을 지원했었죠..


크리에이티브 커먼즈 라이선스
Creative Commons License

'XML Developer > XSL' 카테고리의 다른 글

XSLT <for-each>  (0) 2011/11/30
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




Trackback 0 And Comment 0

XSL에 대하여

|


 
XSL이란?
 
XSL은 EXtensible Stylesheet Language의 약자입니다.
즉, 스타일시트 언어라는 것이죠..
 
스타일시트하면 떠오르는 것이 CSS가 있지요~ (이것도 나중에 한번 다뤄볼 예정입니다.)
CSS는 주로 HTML의 스타일시트로 사용되고 있습니다.
 
W3C에서는 XML을 위한 스타일시트를 만들어야겠다고 생각했고,
그렇게 해서 탄생한 것이 바로 XSL입니다.
 
CSS = HTML Style Sheets
 
태그를 마음대로 확장할 수 있는 XML과 달리 HTML은 미리 정의된 태그들만 사용할 수 있습니다.
이런 태그들은 이해하기 어렵지 않습니다. 현재 우리가 자주 사용하고 있는 것이죠..
 
예를들어 <table>이란 태그는 표와 같은 테이블을 나타내고,
모든 브라우저에서는 알아서 적절하게 보여줍니다.
 
이런 HTML의 각 태그를 보여줄 때,
폰트나 색상과 같은 스타일을 추가하기 위해서 CSS를 사용하게 됩니다.
 
음.. 예전에는 <font> 태그와 같은 스타일 관련 태그를 사용하기도 했습니다.
XHTML 1.0으로 넘어오면서 부터는 CSS를 이용한 스타일시트의 사용을 권장하고 있는 추세입니다.
 
XSL = XML Style Sheets
 
HTML과 달리, XML은 미리 정의된 태그를 사용하지 않습니다.
 
<table>이란 태그를 XML 문서에서 사용할 경우,
반드시 표와 같은 테이블을 의미하지 않을 수 있는 겁니다.
어떤 사람은 <table> 태그로 집에서 사용하는 식탁을 정의해서 사용 할 수도 있죠..
(이걸 정의하는 것이 바로 DTD나 XML 스키마죠..)
 
또한 각 브라우저들은 XML의 태그를 어떻게 보여줘야 하는 지 모릅니다.
그래서 XML 문서를 열어보면 그냥 XML 태그를 쭉 보여주고 있죠~~
 
이런 XML 문서를 보여주는 방식을 정의한 것이 바로 XSL입니다.
 


XSL의 구성
 
XSL은 다음 세가지 부분으로 구성되어 있습니다.
 
- XSLT : XML 문서를 변환(transform)하기 위한 언어
- XPath : XML 문서를 탐색(naviagte)하기 위한 언어
- XSL-FO : XML 문서를 포맷팅(formating)하기 위한 언어
 
앞으로 살펴볼 XSLT에 대해서만 간략하게 설명하면,
XML 문서를 HTML 문서나 다른 XML 문서로 변환하기 위해 사용하는 것을 의미합니다.

 
 
그럼 왜 XML 문서를 다른 문서로 변환해야 할까요?
제 생각에는 서로 다른 스키마를 가진 XML을 공유해야 할 경우도 있을 거구요..
웹 브라우저에서 XML을 HTML처럼 보여주려면 HTML 문서로 바꾸어야 하는 경우도 있을 겁니다.
그 외에도 여러 가지 이유가 있을 수 있겠죠..
 
음.. 첨보는 분들은 헤깔릴 수 있습니다.
앞으로 차근차근 설명할 테니까.. 더 나아질 겁니다.
 
그럼.. 좋은 하루 되세요~~

 
크리에이티브 커먼즈 라이선스
Creative Commons License

'XML Developer > XSL' 카테고리의 다른 글

XSLT <for-each>  (0) 2011/11/30
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




Trackback 0 And Comment 0
prev | 1 | next