'XML Developer/XSL'에 해당되는 글 6건
- 2011/11/30 XSLT <for-each>
- 2011/11/25 XSLT <value-of>
- 2011/11/21 XSLT <template>
- 2011/11/16 XSLT 변환(Transform)
- 2011/11/10 XSLT 소개
- 2011/11/08 XSL에 대하여
이전 value-of의 예제와 거의 비슷합니다.
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 파일 보기, 결과 보기
결과는 다음과 같이 나타납니다.
'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 |
이제 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 미니
'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 |
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>입니다. 요걸 다음 시간에 한번 정리해 보도록 하지요~~
그럼.. 좋은 하루 되세요.
'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 |
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 문서를 확인할 수 있습니다.
XSL 스타일시트 생성
이제 위 XML 문서를 HTML 형식으로 출력하기 위한 XSL 스타일시트(cdcatalog.xsl)를 만들어보겠습니다.
xsl:template로 구성하면 되는데요.. 소스는 다음과 같습니다.
<html> 태그들이 나오는 걸로 봐서 HTML 형태로 변환한다는 것을 알 수 있을 겁니다.
중간에 <xsl:for-each> 태그도 보이네요.. 루프를 돌면서 <table> 태그의 각 항목을 만들고 있습니다. ^^
보다 자세한 소스 설명은 강좌로 계속 진행하도록 하구요..
일단 위에서 설명한 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 |
이번에는 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을 지원했었죠..
'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 |
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 |


