티스토리 뷰

XML Developer/XSL

XSLT 변환(Transform)

미니~ 2011. 11. 16. 14:30


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 스타일시트의 내부로 들어가 볼 계획입니다.

 

 

'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
댓글
댓글쓰기 폼