'XML Developer/XML기초'에 해당되는 글 8건

  1. 2011/10/27 XML 관련 O/X 문제~
  2. 2002/08/02 1.7 마치면서
  3. 2002/08/02 1.6 XSL & XML
  4. 2002/08/02 1.5 XML & DTD
  5. 2002/08/02 1.4 DTD란?
  6. 2002/08/02 1.3 XML의 구성 요소
  7. 2002/08/02 1.2 XML의 시작
  8. 2002/08/01 1.1 XML이란?

XML 관련 O/X 문제~

|


어제 XML 관련 과목에서 중간고사로 냈던 문제 중 O/X 문제입니다. 

여러분들도 한번 풀어보시죠.. (답은 다음주에 올리도록 하죠.. ^^)
XML의 기본 개념을 다시 한번 검증하는데 도움이 될 겁니다. 

찍는 걸 방지하기 위해 X일 경우, 이유도 적으라고 했네요.. ^^
O로 찍으면 맞는 개수가 적을거구... 

4. 다음 각 항목에 O/X로 답하시오. X인 경우, 이유도 함께 작성하시오. 

1) XML stands for “Example Markup Language”.

2) XML uses a DTD to describe the data. 

3) XML’s goal is to replace HTML.

4) DTD stands for “Dynamic Type Definition”.

5) All XML documents must have a DTD.

6) All XML elements must be properly closed.

7) XML documents must have a root tag.

8) XML elements cannot be empty. 


다음은 정답입니다. 

1) XML stands for “Example Markup Language”. (X)
    XML stands for "eXtensible Markup Language". 

2) XML uses a DTD to describe the data. (O)

3) XML’s goal is to replace HTML. (X)
    XML's goal is to replace SGML. 

4) DTD stands for “Dynamic Type Definition”. (X)
    DTD stands for "Document Type Definition".  

5) All XML documents must have a DTD. (X)
    Well-formed XML documents have not a DTD. 

6) All XML elements must be properly closed. (O)

7) XML documents must have a root tag. (O)

8) XML elements cannot be empty. (X)
    XML elements can be empty. 


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

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

XML 관련 O/X 문제~  (0) 2011/10/27
1.7 마치면서  (0) 2002/08/02
1.6 XSL & XML  (0) 2002/08/02
1.5 XML & DTD  (0) 2002/08/02
1.4 DTD란?  (0) 2002/08/02
1.3 XML의 구성 요소  (0) 2002/08/02




Trackback 0 And Comment 0

1.7 마치면서

|



7. 마치면서

  지금까지 XML의 기본적인 것들을 간단하게 살펴보았습니다.

분명히 부족한 부분이 많이 있습니다. 필요한 것을 여기에서 만족하지 마시고 나름대로 찾아 보시기 바랍니다.



그럼 근본적인 질문을 하나 던져 보기로 하죠..

여러분은 왜 XML을 공부하세요? 또 많은 사람들이 왜 XML에 이렇게 관심을 보일까요?



우리가 XML에 대한 기본적인 것을 알아 봤지만 이게 실제로 어떻게 쓰일지를 모르는 거죠.



그래서 오늘은 XML을 가지고 무엇을 할 수 있는지 정리해 보려구 합니다.



정보검색, 문서관리



문서의 메타정보나 온라인 정보를 기술하는데 XML을 활용할 수 있습니다.

메타 정보란 무엇을 말하냐면요? 흔히 데이터의 데이터라고 합니다.



예를 들어 "작가 이문열"이라고 할 때 "이문열"이 데이터라면 "작가"는 데이터 "이문열"이 무엇을 나타내는지 설명을 해주고 있다는 것이지요.

이럴 때 "작가"를 흔히 메타 데이터라고 합니다. 그냥 데이터를 설명하는 또다른 데이터라고 생각하시면 편합니다.

아님 데이터베이스에서 필드명의 역할이라고 생각해도 되구요.



XML에서는 이런 메타정보를 표현할 수 있는 방법이 있습니다.

바로 태그죠.. <작가>이문열</작가> 이런 형태의 표현이 가능하다는 얘기죠.



그래서 XML의 태그를 활용해 메타정보를 포함한 문서를 작성한다는 것입니다.

그럼 뭐가 좋냐구요?? 바로 정보검색이 정확해 집니다. 거기에 문서관리까지 제대로 할 수 있데요..



흔히 이렇게 XML의 메타정보를 활용한 검색을 XML 구조적 검색이라고 하는데요..

예를 들어서 설명을 해보죠..



만약 우리가 저자가 "빌게이츠"인 문서를 찾는다고 하면 기존의 검색 방식으로 검색어 "빌게이츠"를 찾습니다.

그러면 "빌게이츠"가 포함된 모든 문서를 찾게 될 것입니다. 그리고 사용자는 검색된 수많은 문서를 일일이 확인을 해야 하죠.



그러나 만약 XML로 되어 있다면 저자="빌게이츠" 인 문서를 찾게 됩니다. 즉, 태그가 <저자>이고 내용이 "빌게이츠"인 문서만 검색하게 되지요.

만약  한 그룹내에서 정해진 DTD정보를 토대로 검색을 한다면 보다 정확한 검색이 가능해 지겠지요.



그러나 이것이 가능해지려면 우선 잘 정의된 DTD가 있어야 합니다.

애매모호한 DTD라면 오히려 검색 결과가 이상해질 수도 있겠죠.




다양한 문서 표현



하나의 XML 문서를 가지고 여러 가지 포맷의 문서를 만들어 낼 수 있다는 겁니다.

첫 강좌에서 아반테를 가지고 설명을 드렸던 부분이네요.



XML 문서를 XSL과 같은 스타일쉬트를 이용해 웹 브라우저로 보여 줄 수도 있고

CD로 제작할 수도 있다는 겁니다. 심지어는 전자출판이나 기존의 종이로도 다양하게 출력할 수 있다는 것이지요.



제가 얼핏 듣기로 MS-Office에서 엑셀, 워드, 파워포인트간의 데이터의 공유하는 것이 예전에 OLE 개념이었는데.

이제는 XML로 한다는 얘기를 들은 적이 있거든요. 맞는지는 모르겠어요?



근데 어떤 책에 보면 실제 워드를 XML로 변환하는 프로그래밍 예제가 있더라구요.



어쨋거나 XML 문서 하나를 여러 가지로 변환해서 사용할 수 있다는 것도 큰 장점이 됩니다.



데이터 베이스



XML은 어떻게 보면 데이터 베이스와 유사한 구조를 가지고 있습니다.

다만 XML은 계층적인 구조이고 데이터베이스는 RDBMS의 경우 2차원적이라는 것이 다르죠.



하지만 기존 디비 관련 회사들은 모두 XML을 지원하겠다고 나서고 있습니다.

Oracle이나 Sybase가 그렇구요.. MSSQL의 경우도 2000버전에서 XML 부분을 대폭 수용하고 있습니다.



이것은 XML을 사용하여 데이터베이스의 자료를 표현하고 교환할 수 있게 됨을 의미합니다.

그렇게 된다면 기존의 데이터베이스가 가지는 장점에 XML을 통한 이동성과 다양성을 갖추게 되는 것이지요.



만약 DB 자료를 가지고 XML형태로 서비스한다면 일단 쉽게 웹을 지원할 수 있게 될 거구요.

위에서 설명한 XML의 응용들을 그대로 활용할 수 있겠죠.



메시징 처리



서로 완전히 다른 응용 프로그램이나 플랫폼 사이의 통신용 데이터 전달 포맷으로 XML을 사용할 수도 있습니다.

이것은 요즘 부각되고 있는 EDI에 적용되어 XML/EDI라고도 하는데요.



기존의 EDI가 회사마다 다르게 구현되어 서로 호환성의 문제가 많이 발생했습니다.

그리고 고비용으로 인하여 조그마한 기업에서는 쉽게 구현할 수도 없었구요.

하지만 XML을 활용하면 기존의 웹환경을 그대로 활용하면서 공유된 DTD를 통해서 호환성 문제도 해결할 수 있게 됩니다.



그리고 이걸 활용해서 요즘 많이 나오는 B2B, B2C, B2G등에 응용하려는 움직임도 있습니다.



여기까지가 XML의 응용 분야이구요. 다음은 현재 XML이 적용되고 있는 분야를 정리해 보았습니다.



멀티미디어 정보를 표현하기 위한 SMIL

그래픽 정보를 표현한기 위한 SVG

전자상거래에서 사용되는 cXML

무선 데이터 통신을 위한 WML

음성 통신을 위한 VoiceXML

데이터 채널을 위한 CDF

원격으로 소프트웨어를 설치하기 위한 OSD

.....




휴~~ 대략 정리해 봤습니다. 어떤 부분은 좀 말이 안되는 점도 있을 거예요..

그냥 그런갑다 하고 함 봐주세여~~ 의문나는 사항은 Q&A 게시판을 이용해 주시고요.



XML은 아직도 끊임없이 연구되고 발전되고 있는 분야입니다.

실제 XML이 완전히 자리를 잡기 까지는 시간이 좀 더 필요할 것으로 보입니다.

그리고 자리가 잡혔을 때의 XML의 모습을 지금 예측할 수 없을지도 모릅니다.



왜냐하면 XML의 활용은 바로 여러분들의 상상력에 달려있기 때문입니다.   2002/08/02  From 미니

2002/08/01 - [XML Developer/XML기초] - 1.1 XML이란?
2002/08/02 - [XML Developer/XML기초] - 1.2 XML의 시작
2002/08/02 - [XML Developer/XML기초] - 1.3 XML의 구성 요소
2002/08/02 - [XML Developer/XML기초] - 1.4 DTD란?
2002/08/02 - [XML Developer/XML기초] - 1.5 XML & DTD
2002/08/02 - [XML Developer/XML기초] - 1.6 XSL & XML
2002/08/02 - [XML Developer/XML기초] - 1.7 마치면서
크리에이티브 커먼즈 라이선스
Creative Commons License

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

XML 관련 O/X 문제~  (0) 2011/10/27
1.7 마치면서  (0) 2002/08/02
1.6 XSL & XML  (0) 2002/08/02
1.5 XML & DTD  (0) 2002/08/02
1.4 DTD란?  (0) 2002/08/02
1.3 XML의 구성 요소  (0) 2002/08/02




Trackback 0 And Comment 0

1.6 XSL & XML

|


6. XSL & XML

안녕하세요.지난 강좌까지 XML 문서와 DTD 문서에 대해서 간단히 알아 보았습니다. 

오늘은 기초 강좌의 마지막으로 XSL에 대해서 또 간략하게 알아보도록 하겠습니다.



사용될 예제는 지난번에 사용된 cds.xml을 확장해서 사용합니다. 역시 소스는 자료모음 에서 받으면 됩니다.



지난번에 설명했듯이 XML은 문서의 구조를 표현하는 것과 문서를 보여주는 것(포매팅)이 서로 분리 되어 있다고 했습니다.

이렇게 XML 문서를 보여주기 위해서 사용되는 것이 XSL과 CSS가 있습니다. 

CSS는 HTML에서도 사용되었던 것입니다. 이걸 XML에 적용한 것이구요. 

XSL은 SGML에 있었던 DSSSL을 확장한 것이라 생각하면 됩니다.



간단한 XML 문서의 경우 CSS를 사용할 수 있지만 제대로 된 포매팅을 공부해 보시려면 XSL을 잘 봐야 합니다.

해서 저는 오늘 XSL에 대해서 제가 아는 만큼 아주 간단히 다루려고 합니다.



지난 강좌에 사용한 cds.xml에 XSL과 같은 스타일 쉬트를 사용하지 않으면 다음과 같이 나타납니다.





<그림 1 : XSL을 사용하지 않은 cds.xml 문서>



여기에 오늘 사용할 간단한 XSL을 붙이면 다음과 같은 형태로 웹 브라우저에 나타납니다.






<그림 2 : XSL을 사용한 cds.xml 문서>



음.. 예전에는 소스를 모두 제공했는데요.. 현재는 서버 용량상 그것은 힘들 것 같네요.. 그렇지만 만약 요청을 하시면, 소스 자료실 정도를 함 만들어 볼까 함니다.



그럼 XSL을 통해서 어떻게 XML 문서가 보여지는 지 다음 그림을 보시죠.





<그림 3 : XSL Two Process (출처 : http://www.w3.org/TR/xsl/)



위의 그림에서 보면 XSL은 크게 2가지로 나누어서 처리하고 있습니다. 첫 번째 것은 XSL Transform이고 두 번째는 XSL Formatter입니다.



XSL Transform은 XML 문서를 다른 포맷의 문서나 다른 XML 문서로 변경하는 것입니다. 

그리고 XSL Formatter는 변경된 XML문서를 웹 브라우저나 다른 매체에서 볼 수 있는 형태로 만들어 주는 것입니다.




XSL Transform은 1999년 11월 16일에 W3C에서 Recommendation되었구요. 현재 1.1버전이 Working Draft상태에 있습니다. 

그리고 XSL Formatter는 현재 Candidate Recommendation 상태에 있습니다.



참고로 W3C에 문서가 제출되면 다음과 같은 단계를 거쳐서 표준으로 인정됩니다.

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



표준으로 인정되기까지 상당한 어려움이 있겠죠. 

어쨌든 우리가 오늘 공부하게 될 것은 XSL Formatter가 됩니다. 웹 브라우저에 보여지는 것을 공부할 테니까요^^;;



자 그럼 시작해 볼까요?? 전체 소스는 위의 소스받기를 하면 받을 수 있습니다. 

여기서는 각 부분별 XSL 소스를 가지고 설명 드리도록 하겠습니다.



XSL 문서도 XML 문서의 일종이므로 다음과 같이 XML 선언과 루트 엘리먼트로 시작합니다. 


<?xml version='1.0' encoding="ksc5601"?>
<xsl:stylesheet
        xmlns:xsl="http://www.w3.org/TR/WD-xsl"
        xmlns="http://www.w3.org/TR/REC-html40"
        result-ns="">





여기서 하나만 설명하고 지나가도록 하겠습니다. xmlns:xsl~~~ 이런 형태로 표현되고 있는 것이 있습니다. 

우리는 이러한 것을 XML의 NameSpace라고 합니다. 우리말로는 이름공간이라고도 하더군요.

XML은 태그를 만들어서 사용할 수 있기 때문에 우연히 같은 태그가 웹상에서 공존할 수 있습니다. 

그럴 경우 서로 구분지어줄 것이 필요합니다. 그러한 역할을 수행하는 것이 바로 NameSpace입니다. 



만약 A와 B란 사람 모두 <test>란 태그를 사용한다면  <A:test> <B:test>와 같이 사용함으로서 구분이 가능하다는 것입니다.

설명이 되었나요?? 실은 저두 대략적으로 밖에 모르는 부분이라서~~ 쩝!!!

1: <xsl:template match="/">
2:     <HTML>
3:       <HEAD>
4:         <TITLE>음반 CD를 이용한 XSL 처리</TITLE>
5:       </HEAD>
6:       <BODY>
7:         <P>음반 CD 모음집</P>
8:         <xsl:apply-templates/> 
9:       </BODY>
10:    </HTML>
11: </xsl:template>





1번줄에 <xsl:template match="/">라고 사용된 부분이 있습니다. xsl:template는 XML의 요소가 다음 템플릿처럼 변환되면 된다고 설명하는 것입니다.

여기서는 "/"로 되어 있으니까 루트 엘리먼트를 만나면 xsl:template를 처리하라는 의미가 되겠죠.

그럼 xsl:template가 하는 일은 <xsl:template>에서 </xsl:template>까지 XML 문서에 적용하라는 것입니다.



그렇게 되면 2~10번 사이의 내용을 기반으로 XML 문서를 변환하게 됩니다. 2~10번 줄은 잘 보시면 기존의 HTML 형태입니다. 

HTML 태그를 이해하는 것은 별 어려움이 없을 것 같네요. 여기서는 설명의 편의를 위해서 HTML 태그는 대문자로 처리하였습니다.



엉~~ 그런데 못보던 것이 보이네요.. 8번째 줄에요.. 

<xsl:apply-templates/>

이것이 무엇일까요?? 템플릿을 적용하라는 거죠.

즉, 현재 엘리먼트의 자식노드들 중에서 <xsl:template match="">과 일치하는 엘리먼트를 만나면 해당 내용으로 변환하라는 의미가 됩니다.



소스의 다음 부분을 보도록 하죠. 

<xsl:template match="compactdiscs">
        <xsl:apply-templates select="compactdisc"/>
</xsl:template>





이것도 마찬가지죠.. <compacdiscs>란 엘리먼트를 만나면 이 부분으로 변환하는데.. 

또 템플릿을 적용하라고 나와있죠.. 하지만 위의 apply-templates와의 차이점은 여기서는 엘리먼트를 지정하고 있다는 것입니다.

즉, <compactdisc>를 만나면 해당 템플릿을 사용하라는 거죠. 



<compactdisc>의 템플릿은 다음과 같습니다. 

1: <xsl:template match="compactdisc">
2:         <FONT SIZE="2">
3:         음악가 : <xsl:value-of select="artist"/>
4:         </FONT><BR/>

5:         <FONT SIZE="2">
6:         CD 제목 : <xsl:value-of select="title"/>
7:         노래 수 : <xsl:value-of select="title/@numberoftracks"/>
8:         </FONT><BR/>

9:        <FONT SIZE="2">
10:        노래 곡명 <BR/>
11:        <TABLE BORDER="0">
12:        <xsl:for-each select="tracks/track">
13:                <TR>
14:                        <TD WIDTH="50"> </TD>
15:                        <TD><xsl:value-of/></TD>
16:                </TR>
17:        </xsl:for-each>
18:        </TABLE>
19:       </FONT>

20:        <FONT SIZE="2">
21:        가격 : <xsl:value-of select="price"/>
22:        </FONT><P/><BR/>
23: </xsl:template>






여기서 많은 XSL의 기본 사항을 볼 수 있네요 ^^:; 하나씩 살펴보도록 하죠.

1번째 줄의 <xsl:template match="compactdisc">는 앞에서도 설명한 것이죠. 

<compactdisc>를 만나면 위의 <xsl:tempalte>와 </xsl:template>사이의 내용으로 변화하라는 의미가 되는 거지요.



<xsl:tempalte>와 </xsl:template>사이를 보면 굉장히 길지만 대부분이 눈에 익숙한 HTML 태그입니다.

그렇죠..

자.~~ HTML 태그를 제외하고 나머지 XSL이 사용된 부분을 가지고 설명을 하지요.

참! 당연한 얘기지만 <BR>태그가 사용된 걸 보세요.. XSL도 XML 문서이므로 당연히 시작태그와 닫는태그가 존재해야겠지요.

그래서 <BR/>과 같은 빈 엘리먼트의 형태로 사용되었습니다. 참고하시라구요^^;;



가장 많이 사용되는 것으로 다음과 같은 것이 있습니다. 

<xsl:value-of select="artist"/>



<xsl:value-of>는 뒤의 select와 일치하는 태그가 있으면 그 태그의 내용을 가져와서 현재 위치에 포함하라는 의미로 해석하면 됩니다.

즉,, 실제 소스에서 

<artist> Frank Sinatra </artist>

와 같은 형태로 표현되어 있을 경우 

<xsl:value-of select="artist"/> 부분에 <artist>의 내용 Frank Sinatra가 들어가게 됩니다.



좀 이해가 되나요??

6번줄이나 21번 줄도 같은 의미로 해석할 수 있겠죠.. 

CD 제목 : <xsl:value-of select="title"/>

가격 : <xsl:value-of select="price"/>



실제 XML문서에서 <title> 태그와 <price>태그의 내용이 포함되면 되겠죠.



12번줄에서 17번 줄은 XSL에서 테이블과 같은 것을 사용하고 할 경우에 표현할 수 있는 방법을 나타낸 것입니다.

여기에서 사용된 <xsl:for-each>는 반복을 나타내는 XSL 요소입니다. 일반 프로그램 언어의 for문과 비슷하죠.



다만 XML은 같은 요소가 반복될 수 있습니다. 그래서 <xsl:for-each select="tracks/track">



tracks/track이 반복될 때마다 <xsl:for-each>사이의 문장을 수행하라는 의미가 되죠.



그렇다면 tracks/track은 무얼 나타낼까요? 이것은 부모 자식 관계를 나타냅니다. 

XML 문서는 포함관계로 이루어져 있으므로 <tracks> 엘리먼트의 자식으로 <track>이 나타날 때마다 적용시켜라라는 의미로 해석하면 됩니다.



<xsl:value-of/>이렇게 사용된 부분은 이미 무슨 엘리먼트인지 알고 있기 때문에 굳이 지정하지 않아도 <track>의 내용을 가져오기 때문입니다.



마지막으로 속성값을 가져오려면 어떻게 해야 하는가? 7번째 줄을 보세요. 

노래 수 : <xsl:value-of select="title/@numberoftracks"/>





title/@numberoftracks에서 @는 속성을 나타냅니다. 즉, <title>엘리먼트의 속성 nuberoftracks의 속성값을 나타내는 것이죠.



분명히 XSL을 적용하지 않은 문서보다는 사용자가 보기 편할 겁니다. 여러분이 한번 이런 XSL 문서를 자유롭게 변경해 보세요.

HTML 바꾸듯이 하면 됩니다.



휴~~ 이것으로 여러분은 XSL에서 사용되는 엘리먼트와 속성의 값을 가져오는 방법. XSL 템플릿의 적용방법, 반복문을 처리하는 방법을 배웠습니다. 



XSL은 이것 이외에도 많은 요소를 가지고 있습니다. 조건문이나 기타 다른 형식의 문장도 처리할 수 있습니다. 

그러나 이후의 공부는 본인에게 맡기고 오늘은 이정도로 간단히 설명하려고 합니다. 



이렇게 해서 기초강좌를 어느정도 마쳤습니다. 다음은 마지막으로 XML의 응용 분야에 대해서 간단히 알아보구요.

XML 기초강좌를 마무리 하려고 합니다. 도움이 됐는지 모르겠군요. 그저 저 혼자 주절주절 떠든건 아닌지.. 쩝~~



담 강좌는 지난번에 말씀 드린 대로 MSSQL에서 XML의 사용법을 진행하려고 합니다.

부족하더라두 이해해주세요.. 그럼.. 2002/08/02  From 미니

=======================================================================
2007/06/08 추가..

이 글에 대해서 나름대로 그림으로 해석을 해준 분이 있어서 링크로 추가합니다. 
말로만 되어 있어서 잘 이해가 안되는 분들에게는 좋은 자료가 될 것 같습니다. 

http://blog.naver.com/ziziri80?Redirect=Log&logNo=110002413257

그럼.. 좋은 하루 되세요~~

2002/08/01 - [XML Developer/XML기초] - 1.1 XML이란?
2002/08/02 - [XML Developer/XML기초] - 1.2 XML의 시작
2002/08/02 - [XML Developer/XML기초] - 1.3 XML의 구성 요소
2002/08/02 - [XML Developer/XML기초] - 1.4 DTD란?
2002/08/02 - [XML Developer/XML기초] - 1.5 XML & DTD
2002/08/02 - [XML Developer/XML기초] - 1.6 XSL & XML
2002/08/02 - [XML Developer/XML기초] - 1.7 마치면서

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

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

XML 관련 O/X 문제~  (0) 2011/10/27
1.7 마치면서  (0) 2002/08/02
1.6 XSL & XML  (0) 2002/08/02
1.5 XML & DTD  (0) 2002/08/02
1.4 DTD란?  (0) 2002/08/02
1.3 XML의 구성 요소  (0) 2002/08/02




Trackback 0 And Comment 0

1.5 XML & DTD

|



오늘은 지난번에 하겠다고 했던 DTD 예제를 가지고 XML문서로 만들어 가는 걸 설명해 드리려고 합니다.



오늘 예제는 제가 MS 사이트에서 가져온 것으로 일반적인 음악 CD에 대한 항목을 나타내는 예제입니다. 해당 소스는 자료모음 에서 받으실 수 있습니다.



먼저 이 문서의 DTD를 살펴보도록 하죠.

1: <!ELEMENT compactdiscs (compactdisc*)>
2:     <!ELEMENT compactdisc (artist, title, tracks, price)>
3:           <!ENTITY % Type "individual | band">
4:           <!ELEMENT artist (#PCDATA)>
5:                  <!ATTLIST artist type (%Type;) #REQUIRED>
6:           <!ELEMENT title (#PCDATA)>
7:                  <!ATTLIST title numberoftracks CDATA #REQUIRED>
8:           <!ELEMENT tracks (track*)>
9:           <!ELEMENT price (#PCDATA)>
10:         <!ELEMENT track (#PCDATA)>





위의 DTD는 다행히도 제가 지난 강좌에서 설명한 엘리먼트와 속성으로 이루어져 있습니다.

실제로 여러 DTD를 보면 무지무지 복잡하게 되어 있습니다. 그러나 기본적으로 꼭 알아야 하는 것이

바로 엘리먼트와 속성입니다. 이 두가지만 잘 파악하고 있으면 어떤 DTD에도 빠르게 적응할 수 있을 겁니다.

번호는 설명을 위해서 제가 붙여놓은 것입니다. 실제 DTD에는 번호가 붙지 않습니다.



여러분이 소스를 테스트 하시려면 반드시 "1:" 이 부분을 모두 삭제하고 사용하시기 바랍니다.



DTD를 한번 쭉 살펴 볼까요?

어라!! 잉~~ 모르는 것이 중간에 하나 끼어 있네요..



3번줄을 보세요... ENTITY라?? 분명 XML 구성요소를 할 때는 설명이 나왔는데 DTD에는 설명이 없었죠.

자~ XML 구성요소에서 설명한 것으로 생각을 해보세요. ENTITY는 텍스트나 Binary 데이터, 비 ASCII 문자열을 대치한다고 했죠.

생각 나세요.. 쿠쿠 제 강좌를 참 잘 따라온 분이네여~~ 생각이 안나시는 분은 앞부분을 참고하세요.



엔터티는 XML 문서에서 사용될 수도 있지만 DTD문서에서도 사용될 수 있습니다.

DTD 문서에서 사용되는 엔터티를 파라미터 엔터티라고 하죠.

우리가 XML에서 엔터티를 사용할 때 < & & 이런 형태로 사용했죠..

DTD에서는 %lt; % %amp;라고 사용을 합니다. 좀 다르죠.. 의미는 거의 비슷하다고 보면 됩니다.



자 그럼.. 위에서 <!ENTITY % Type "individual | band">



은 Type이란 엔터티를 "individual | band"로 바꿔라 라는 의미로 해석하면 됩니다.



그럼 Type이 사용된 곳을 보죠.. 5번째 줄에 보면 %Type; 이란 부분이 있죠. 그부분을 바꿔 주면 됩니다.

즉, 위와 같은 경우 다음 두줄을 이렇게 한줄로 바꿀 수 있습니다. 의미는 같네요.

<!ENTITY % Type "individual | band">

<!ATTLIST artist type (%Type;) #REQUIRED>


<!ATTLIST artist type (individual | band) #REQUIRED>




실제로 소스를 다운 받아서 바꿔서 사용해 보세요. 당연히 됩니다.

참고 : 지난번처럼 하면 안됩니다. 송선희님이 지적해 주셨네요.. 감사합니다. 새롭게 고쳐 놓았습니다.

          %Type; => individul|band 로 바꾸는 거네요. 그래서 위처럼 하셔야 합니다.

          실제로도 XML 스펙에 보면 위와 같은 속성 타입을 열거형이라고 하는데요.

          열거형은 ()로 둘러쌓여 있구요.. |로 구분한다 라고 나와있네요. 죄송함다.. 제가 미리 체크하지 못했네요 T__T



그럼 여기서 당근 질문을 하나 하셔야 합니다. 왜 파라미터 엔터티를 사용하느냐?



그냥 직접 쓰면 되는데?? 그건 우리가 C나 C++에서의 #define을 사용하는 이유와 같습니다.

위에서 Type에 하나가 추가되었다고 보죠. 즉, 지금은 개인과 밴드만이 존재하는데.. 만약 듀엣이 추가된다면??

DTD 전체를 바꿔야겠죠..



그게 복잡한 DTD라면 더욱 머리가 아파지는 거지요.. 하지만 엔터티를 사용했다면 엔터티 선언 부분만 바꾸면 됩니다.

당연히 엔터티의 효용도가 높아 지겠죠. 실제로 많은 DTD가 이 엔터티를 주로 사용합니다.



자, 그럼 계속 가 볼까요?? 우리가 할 일은 위의 DTD를 보구서 XML 문서 하나를 만들어 가는 겁니다.

1번줄을 보세요. <compactdiscs>는 <compactdisc>를 여러번 포함할 수 있습니다.
 
<!ELEMENT compactdiscs (compactdisc*)>

제가 어떻게 여러번 포함될 수 있다는 것을 알았을까요? 그것은 * 때문입니다. 이런 기호들의 의미가 지난 강좌에 소개 됬었죠.



그렇다면 다음처럼 만들어 줄 수 있을 겁니다.

<compactdiscs>

    <compactdisc>

    ...

    </compactdisc>

    <compactdisc>

    ...

    </compactdisc>

</compactdiscs>





그리고 나서 2번의 <compactdisc>를 살펴보죠..


<!ELEMENT compactdisc (artist, title, tracks, price)>


(artist, title, tracks, price)  이렇게 나와 있습니다. 맨 뒤에 아무것도 없으니까 1번 나타난다는 의미고요.

, 로 되어 있으니까 순서대로입니다. 지난번 강좌와 연결해서 이해가 되나요??



그러므로 <compactdisc>는 <artist>, <title>, <tracks>, <price>가 순서대로 나타난다고 보시면 됩니다.

<compactdisc>

    <artist></artist>

    <title></title>

    <tracks></tracks>

    <price></price>

</compactdisc>





자 여기까지 별 어려움이 없죠.. 계속 가보죠..

4번째 줄을 보면 <artist>는 #PCDATA를 가지고 있습니다. <!ELEMENT artist (#PCDATA)>



#PCDATA가 뭐였죠? 파싱된 문자데이터.. 그냥 문자열로 생각하면 편하다고 했죠.

즉, <artist>는 문자열을 자식으로 가지고 있고요.



이어서 5번째 줄을 보세요. <artist>는 속성을 포함하고 있다고 나와 있죠..


<!ATTLIST artist type (%Type;) #REQUIRED>


속성의 이름은 type이고 파라미터 엔터티를 문자열로 바꾸면 "individual | band" 이므로 열거형으로 둘중의 하나를 값으로 가져야 하고요.

그리고 반드시 필요한 속성이라는 것이죠.. 4,5번을 종합해 보면 다음과 같이 작성해야 한다는 거네요..

<artist type="individual">Frank Sinatra</artist>





6번째와 7번째 줄의 <title>도 비슷합니다. <!ELEMENT title (#PCDATA)>
    <!ATTLIST title numberoftracks CDATA #REQUIRED>





자식으로 CD제목을 나타내는 문자열(#PCDATA)를 가지고 있구요. 속성은 문자열 속성을 가진 numberoftracks가 있습니다.

다음과 같은 형태로 작성하면 되죠..

<title numberoftracks="4">In The Wee Small Hours</title>





여기서 잠시 생각할 것이 numberoftracks의 값은 분명 숫자일 것입니다. 그러나 제가 지난번에 설명했듯이 DTD에서 숫자형이란

데이터 타입은 없습니다. 그냥 모두 문자열일 뿐입니다.



8번째 줄과 10번재 줄을 보면 <tracks>는 여러개의 <track>을 포함할 수 있고 <track>은 내용으로 문자열을 넣어주면 됩니다.

<!ELEMENT tracks (track*)>
    <!ELEMENT track (#PCDATA)>





적용해 볼까요? 이런 형태로 사용할 수 있습니다.

<tracks>

    <track>In The Wee Small Hours</track>

    <track>Mood Indigo</track>

    <track>Glad To Be Unhappy</track>

    <track>I Get Along Without You Very Well</track>

</tracks>





마지막으로 9번째 줄을 보면 <price>는 가격 정보를 나타내는 문자열로서 다음처럼 작성하면 됩니다.

<price>$12.99</price>






여기에 XML 문서 선언 부분을 넣구요. DTD를 선언하는 부분도 넣어서 다음처럼 완성할 수 있습니다.

  <?xml version="1.0"?>
<!DOCTYPE compactdiscs SYSTEM "cds.dtd">
<compactdiscs>
  <compactdisc>
    <artist type="individual">Frank Sinatra</artist>
    <title numberoftracks="4">In The Wee Small Hours</title>
    <tracks>
          <track>In The Wee Small Hours</track>
          <track>Mood Indigo</track>      
          <track>Glad To Be Unhappy</track>
          <track>I Get Along Without You Very Well</track>
    </tracks>
    <price>$12.99</price>
  </compactdisc>
  <compactdisc>
    <artist type="band">The Offspring</artist>
    <title numberoftracks="5">Americana</title>
    <tracks>
           <track>Welcome</track>
           <track>Have You Ever</track>  
           <track>Staring At The Sun</track>
           <track>Pretty Fly (For A White Guy)</track>
    </tracks>
    <price>$12.99</price>
  </compactdisc>
</compactdiscs>





DTD가 주어졌을 때 XML 문서를 생성하는 방법을 간단하게 알아보았습니다. 이것을 통해서 DTD를 좀더 편하게 보았으면 해서

제가 강좌로 마련해 보았네요.



실제로 여러분에게 DTD가 주어졌을 때 이런 형식으로 적용할 수 있다면 앞으로 다가올 웹의 변화에 빠르게 적응할 수 있을 겁니다.

왜냐면 지금 시작되고 있는 웹의 변화는 XML을 기반으로 한 DTD에 있다고 볼 수 있으니까요? 넘 거창했나요?? ^^;;

어쨌거나 반대로 만약 XML 문서를 새로이 받았을 때 이 DTD를 공유하고 있다면 의미해석을 더욱 쉽게 할 수 있을 겁니다. 2002/08/02  From 미니

2002/08/01 - [XML Developer/XML기초] - 1.1 XML이란?
2002/08/02 - [XML Developer/XML기초] - 1.2 XML의 시작
2002/08/02 - [XML Developer/XML기초] - 1.3 XML의 구성 요소
2002/08/02 - [XML Developer/XML기초] - 1.4 DTD란?
2002/08/02 - [XML Developer/XML기초] - 1.5 XML & DTD
2002/08/02 - [XML Developer/XML기초] - 1.6 XSL & XML
2002/08/02 - [XML Developer/XML기초] - 1.7 마치면서

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

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

1.7 마치면서  (0) 2002/08/02
1.6 XSL & XML  (0) 2002/08/02
1.5 XML & DTD  (0) 2002/08/02
1.4 DTD란?  (0) 2002/08/02
1.3 XML의 구성 요소  (0) 2002/08/02
1.2 XML의 시작  (0) 2002/08/02




Trackback 0 And Comment 0

1.4 DTD란?

|



4. DTD란?

  요새 냉방병에 눈병이 심하다고 하네요.. 저도 어째 눈이 좀 안좋아서 안과에 다녀왔네요.. 모두들 뜨거운 여름에 몸 조심하세요.. 그리고 제가 여기에 올리는 강좌는 초보자를 위한 글입니다. 첨 홈페이지를 제작할 때는 XML에 관심이 많아서 많은 분들이 찾아왔었지만, 지금은 XML의 기본사항은 마치 HTML처럼 널리 알려진 내용이 되었네요.. 그래도 또 다시 새롭게 시작하는 분들을 위해서 이 글을 정리해 놓습니다. *^^*



자 그럼 시작해 볼까요?



DTD는 XML 문서에 사용될 구성요소를 정의해 놓은 것으로 생각하면 됩니다. Document Type Definition

그런데 생각보다 DTD는 좀 어렵습니다. 만약 DTD를 설계해야 한다.. 그러면 더욱이 어려워지죠.

제 생각에 초기 DB를 설계하기 위해서 DBA가 필요했던 것처럼 XML에서 DTD를 설계하는 사람도 필요해지겠죠..



그러나 차이는 조금 있습니다. DB를 사용하려면 누구나 DB의 스키마를 정의해야 하지만..

XML을 사용하기 위해서는 DTD를 정의하기 보다는 기존에 정의된 DTD를 가져다가 사용하는 경우가 많이 발생하겠죠.

당연하죠.. 왜냐면 만약 누구나 자기 DTD만 정의해서 사용한다면 그 DTD가 가치를 지닐수 있을까요???

실제로 보면 DTD는 W3C나 기타 XML 관련 기관에서 발표되고 있고 표준화되고 있습니다.



그렇다면 우리의 공부 방향은 어디냐?? 물론 지금 이글을 보시는 분중에서는 DTD를 설계할 필요가 있으신 분도 있겠죠.

그러나 대부분은 DTD를 이해만 하면 될 겁니다. 그래서 오늘은 DTD와 XML에서 가장많이 사용되는

엘리먼트와 속성의 선언에 대해서만 알아보도록 하겠습니다.



DTD의 필요성



HTML에서 <font>라는 태그를 사용했을 때 우리는 <font>가 글자의 글꼴, 색깔, 크기등과 관련이 있다는 것을 잘 알고 있습니다.

우리가 이걸 어떻게 이해하느냐? 그것은 HTML DTD에 <font>태그는 이러이러한 것이고 속성으로는 뭘 가질수 있고..

등등의 정보가 표현되어 있기 때문입니다.



앞에서 설명했듯이 한 공동체에서 이러한 태그를 공유해 특정 부분을 정보화 할 경우 해당 정보의 가치는 더욱 높아질 것입니다.

왜냐하면 그러한 문서는 사람뿐만 아니라 컴퓨터도 쉽게 해석할 수 있고 공동체 내에서 자유롭게 변환이나 이동이 가능하기 때문입니다.

그렇다면 이러한 태그정보를 어떻게 공유할 수 있는가? 계속되는 같은 질문이죠. ^^:;

바로 DTD를 이용해서입니다. DTD의 개념은 XML 이전인 SGML에서부터 존재했습니다.

SGML에서 사용되던 DTD를 간략화 해서 XML에서 사용하게 되었지요. 그래서인지 DTD는 몇가지 문제점을 가지게 되었습니다.



첫째로 DTD에서 정의된 엘리먼트나 속성의 값이 가지게 될 타입을 정의할 수 없습니다.

즉, 정수형, 문자형, 날짜형.. 등등의 변수의 타입을 지정할 수 없는 것입니다. 그래서 DTD가 수행하는 중요한 기능중의 하나인

Validation Check(유효성검사)에서 보다 더 정밀하게 검사할 수 없게 되는 거지요.



둘째로는 DTD문서가 XML문서의 형태가 아니므로 XML 에디터 이외에 또다른 DTD 에디터를 필요로 한다는 것입니다.

이것은 XML과 DTD를 따로 배워야 한다는 문제도 발생시키죠.



그래서... 새롭게 XML 형식의 DTD를 정의하면서 타입도 지정할 수 있는 것이 등장했습니다.

그게 바로 XML Schema입니다.
참 공부하기 어렵죠.. 하나 해두면 또 하나 나오고.. 윽~~~

관심있으신 분은 W3C의 홈페이지에 가서 확인해 보시길 바랍니다. 여기서는 그냥 DTD 이야기만 하죠.



여러분이 알고 있는 HTML, WML, SMIL등등이 각각 자신의 DTD를 가지고 있는 XML 문서라고 보면 됩니다.



그럼 DTD의 구성요소를 하나씩 살펴보도록 할까요? 그러기 위해서 지난번 예제를 다시 사용하도록 하죠.
 
<?xml version="1.0"?>

<html>

   <head>

      XML Developer

   </head>

   <body>

     <img src="xml.gif"/>

     <a href="http://xmlis.pe.kr">Hello World</a>

   </body>

</html>






엘리먼트의 선언



DTD에서 엘리먼트를 선언하는 형식은 다음과 같습니다.


<!ELEMENT 이름 내용>


이름은 사용될 엘리먼트의 이름을 나타내고요. 내용은 자식으로 나타날 수 있는 것들을 적어주면 됩니다.



자 그럼 위의 예에서 <body>태그를 DTD에서 정의한다고 해보죠..

이름은 당연히 body가 되겠죠. 그리고 내용은 <body>와 <body>사이에 나타나는 것을 적어주면 됩니다.

그것이 바로 자식으로 나오는 것이죠.. 위에서 보면 <img>태그와 <a>태그가 나타나고 있죠.



그런데.. <img>나 <a>태그는 순서가 바뀌어도 되고, 또 여러번 나올수도 있다고 합시다.

<body><img...><img...><a...><img...></body>

뭐 이런형태로 나올수 있다고 가정해보죠.. 그런 경우 DTD 선언은 다음과 같이 할 수 있습니다.



이름 : body

내용 : img 또는 a가 여러번 발생

<!ELEMENT body (img|a)*>


위와 같은 형태로 작성이 가능합니다. 휴~~ 어렵죠.. 좀만 더 참고 보세요..

여기에서 어렵게 느끼는 이유는 못보던 것이 나와서입니다. |나 *같은 기호죠.. 다음 표를 참고하세요.

|

 엘리먼트 내용이 선택적으로 나타날 수 있다.

,

 엘리먼트 내용이 순서대로 나타나야 한다.

?

 엘리먼트 내용의 출현회수가 생략되거나 한번 나타난다.

*

 엘리먼트 내용의 출현회수가 생략되거나 여러번 나타난다.

+

 엘리먼트 내용의 출현회수가 최소 한번 이상 나타난다.

 

 엘리먼트 내용의 출현회수가 한번만 나타난다.



무슨 이야긴지 아시겠어요?? 혹 추가적인 설명이 필요하면 Q&A를 이용하시거나 저한테 멜 주세여..



자 이해하기 쉽도록 몇 개 더 해보죠.

<head>와 같은 걸 선언을 한다고 해보죠.. 이름은 head 내용은 어라?? 그냥 문자열이죠.

XML에서는 이러한 것을 #PCDATA라고 부릅니다. 파싱된 문자 데이터라나요?? 단순한 문자열로 인식하면 됩니다.

다만 그 문자열이 XML 문서을 읽을 때 파싱된다는 의미를 가지고 있습니다.



이름 : head

내용 : #PCDATA 가 한번만 출현한다.
 
<!ELEMENT head (#PCDATA)>


뒤에 아무런 기호도 안 붙었죠. 위의 표에서 맨 마지막 것입니다.

그런데.. XML에서 <img>와 같은 태그는 내용을 포함하지 않는 엘리먼트라고 지난번에 설명했죠..

그걸 뭐라고 했죠??? 빈 엘리먼트(Empty Element)라 그랬죠.



문제는 그겁니다. 내용이 없는데 <img>는 어떻게 정의할 수 있을까??

<!ELEMENT 이름 EMPTY>



이렇게 하면 되겠죠.?? 적용시켜 보면

  <!ELEMENT img EMPTY>


휴~~ 엘리먼트에 대해서 이정도로 해두죠.. 어렵나요? 아마 첨 보는 분은 어려울 겁니다.

우리가 무엇이든 시작하려 할 때 가장 어려운 것은 용어라고 생각합니다. 머리에 들어오지 않는 용어가 문제죠.

그런 경우라면 자주 보세요.. 그 방법밖에는 달리 추천할 방법이 없네요.. T__T



속성의 선언



DTD에서 속성을 선언하는 형식은 다음과 같습니다.

<!ATTLIST 엘리먼트이름 속성이름 속성형 (속성기본값)>

엘리먼트이름은 속성을 포함할 엘리먼트의 이름을 나타내고요. 속성이름은 속성의 = 왼쪽에 나타나는 이름이고요.

속성형은 속성이 가질수 있는 타입이고, 속성기본값은 속성의 필요여부등을 나타냅니다.



속성형과 속성기본값은 아래와 같이 정리할 수 있습니다.

속성형

선언형태

설명

문자열 속성

 CDATA

 일반적인 문자열

토큰 속성

 ID

 엘리먼트의 ID

 IDREF

 엘리먼트의 ID를 가리키는 포인터

 IDREFS

 하나이상의 IDREF들

 ENTITY

 외부 엔터티를 가리키는 포인터

 ENTITIES

 하나 이상의 엔터티 값들

 NMTOKEN

 토큰 문자열

 NMTOKENS

 하나 이상의 토큰 문자열들

열거 속성

 (값1 | 값2 | 값3 | ...)

 선택 가능한 값을 목록으로 나타냄



속성의 기본값

설명

 #REQUIRED

 속성값이 반드시 필요한 속성이다.

 #IMPLIED

 속성값이 지정되지 않은 경우 XML 프로세서가 암시적으로 할당한다.

 #FIXED

 속성값이 DTD에 지정된 값과 반드시 같아야 한다.





여기까정입니다. 휴!~ 내가 읽어봐도 몬 소린지 하는지.. 쩝.




예를 하나만 들어보죠. 위에서 <img>태그가 있었습니다. <img>태그의 src 속성을 선언한다고 해보죠..



엘리먼트이름 : img

속성이름 : src

속성형 : 문자열 속성 (CDATA)

속성기본값 : 필요함

  <!ATTLIST img src CDATA #REQUIRED>



이런형태로 사용됩니다.

속성과 관련된 선언도 이정도로만 하겠습니다.



DTD에는 더 많은 구성요소가 있습니다. 하지만 일단 현 강좌가 기초이고 저의 실력도 삐리리 한 만큼 여기까지만 하겠습니다.

대신에 다음 강좌에서는 MS사이트에 예제로 나와있는 음반과 관련된 아주 간단한 DTD가 있습니다.

오늘 배운 엘리먼트와 속성만 나와 있죠. 그걸 가지고서 XML 문서를 만들어 가는 예제를 해보려구 합니다.



그것이 DTD와 관련된 구성요소를 계속 설명하는 것보다는 훨씬 나을 것 같아서요..

그럼..  2002/08/02  From 미니

2002/08/01 - [XML Developer/XML기초] - 1.1 XML이란?
2002/08/02 - [XML Developer/XML기초] - 1.2 XML의 시작
2002/08/02 - [XML Developer/XML기초] - 1.3 XML의 구성 요소
2002/08/02 - [XML Developer/XML기초] - 1.4 DTD란?
2002/08/02 - [XML Developer/XML기초] - 1.5 XML & DTD
2002/08/02 - [XML Developer/XML기초] - 1.6 XSL & XML
2002/08/02 - [XML Developer/XML기초] - 1.7 마치면서
크리에이티브 커먼즈 라이선스
Creative Commons License

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

1.6 XSL & XML  (0) 2002/08/02
1.5 XML & DTD  (0) 2002/08/02
1.4 DTD란?  (0) 2002/08/02
1.3 XML의 구성 요소  (0) 2002/08/02
1.2 XML의 시작  (0) 2002/08/02
1.1 XML이란?  (0) 2002/08/01




Trackback 0 And Comment 0

1.3 XML의 구성 요소

|



3. XML의 구성요소

  벌써 세 번째 강좌네요. 강좌라고 하기에는 초라하기 그지없지만...~~

기초강좌를 마치고 나서는 MSSQL에서의 XML을 사용하는 방법을 할까 하네요. 예전에도 있었던 거죠.. 그리고 나서, 최근에 나온 Oracle의 XML DB에 대해서도 해볼까 하네요.. 아무래도 미니는 DB쪽에 좀더 호기심이 있네요.. ^^



오늘은 지난번에 간단하게 살펴본 XML 문서내에서 사용되는 구성요소들을 하나하나 설명하려고 합니다.

이것은 XML 스펙에 보면 잘 나와 있습니다. 한글로 된 XML 스펙이 많이 돌아다니고 있으니까요..한번씩 살펴 보세요.

  <?xml version="1.0"?>

<html>

   <head>

      XML Developer

   </head>

   <body>

     <img src="xml.gif"/>

     <a href="http://www.word.pe.kr">Hello World</a>

   </body>

</html>



위와 같은 문서도 분명히 XML 문서입니다. 위의 예제를 가지고 XML의 구성요소를 살펴보도록 하죠.





엘리먼트 (Element)



어떤 책에는 요소라고 번역되어 있기도 하더군요. 엘리먼트와 루트 엘리먼트에 대해서는 지난 강좌에서 설명을 하였죠.

복습차원에서 다시 한번 알아보면 위 문장에서 루트 엘리먼트는 <html>이 되겠죠.

루트 엘리먼트는 다른 엘리먼트를 모두 포함하고 있는 것을 말하죠.



그밖에 <head>, <body>, <a>와 같은 태그를 시작 태그라 하구요.</head>, </body>, </a> 같은 태그를 닫는 태그라 하죠

그리고 이러한 <head>..</head>, <body>...</body>, <a>...</a>를 엘리먼트라고 하죠.

그런데 HTML에서는 닫는태그를 빼먹어도 별 문제가 안됐어요.. 하지만  XML에서는 이러한 태그가 빠진다면 에러로 인식하게 됩니다.

반드시 모든 엘리먼트는 쌍으로 이루어져야 한다는 것이지요.



그렇다면 <br>, <img>와 같이 혼자서 존재할 수 있는 엘리먼트는 어떻게 해야 할까요?

XML 스펙에 따르면 위와 같은 것들은 엘리먼트 내에 내용을 포함하지 않은 것으로서 빈 엘리먼트 (Empty Element)라고 합니다.

이러한 빈 엘리먼트의 표기법은 <br></br>

<br/>



와 같은 두가지 형태로 표현 가능합니다. 일반적으로는 두 번째 방식으로 표현을 많이 하더군요.

위의 예제에서도 <img src="xml.gif"/>와 같은 표현을 볼 수 있을 것입니다.



마지막으로 엘리먼트에서 고려해야 할 사항은 시작태그와 끝태그의 엘리먼트 이름이 같아야 한다는 것입니다.

만약 다음과 같이 엘리먼트가 사용되었다면 잘못된 것입니다. <head>XML Developer</tail>








속성 (Attribute)



위의 예에서 <img>태그를 살펴보면, <img>태그는 그림을 나타내고 그림의 소스는 xml.gif라는 것을 우리는 알 수 있습니다.

만약 <img/>와 같이 혼자만 사용되었다면 아무런 의미를 가질 수 없게 될 것입니다.

HTML에서 처럼 이와 같은 것을 속성이라고 부릅니다. 엘리먼트는 속성을 포함할 수 가 있는 거지요.



속성은 문서를 간결하고 해석하기 쉽도록 만들어줍니다.

만약 속성이 없었다면 <img>태그를 다음과 같이 표현할 수도 있을 것입니다. <img>

    <src>xml.gif</src>

    <align>center</align>

</img>





그러나 속성을 활용하면 <img src="xml.gif" align="center"/>



과 같은 형태로 나타낼 수 있습니다.



첫 번째 형태도 잘못된 것은 아닙니다.  그러나 두 번째의 경우가 보다 간결하고 해석하기도 용이한 형태로 이루어져 있지요..

실제로 DTD를 설계할 기회가 생긴다면 저렇게 자식 엘리먼트로 넣을 것인가? 아니면 속성으로 처리할 것인가를 가지고 많은 고민을 하게 됩니다.

MS-SQL의 경우 XML로 DB에서 데이터를 가져올 때 이 속성을 활용하고 있습니다.



속성에서 주의해야 할 것이 하나 있습니다. HTML에서는 다음과 같은 표기법도 허용되었습니다.

<img src=xml.gif>

그러나 XML에서 속성값은 반드시 " 나 '로 둘러쌓여 있어야 합니다. 만약 그렇지 않다면 Well-formed한 문서가 되지 못하죠.

즉, 이러한 형태로 사용되어야 한다는 것입니다. <img src="xml.gif">



<img src='xml.gif'>







처리명령 (Processing Instruction)



<? 와 ?>사이에 표현되고 특정 응용 프로그램에 대해 처리할 정보나 명령을 가리키는 역할을 합니다.

대표적으로 XSL을 선언하는 부분을 예로 들수 있습니다. <?xml:stylesheet type="text/xsl" href="메모.xsl"?>



위와 같이 적용되면 XML의 스타일쉬트를 지정하고 타입은 text/xsl이며 소스는 메모.xsl에 있다

라고 해석할 수 있는 것이지요. 이렇게 해석할 수 있도록 제공하는 것을 처리명령이라고 합니다.



<?xml version="1.0"?>

와 같은 것도 처리명령이라고 할 수 있습니다. 형태가 처리명령과 같지요. 여기서는 XML 버전 1.0을 사용한다라고 가리키고 있습니다.

그런데 XML에서는 이와 같은 것을 특별히 XML 선언이라고 부릅니다. 모든 XML 문서의 시작은 XML 선언으로 해야 하지요.



위 예제에서는 사용되지 않았지만 몇가지 중요한 XML의 구성요소를 추가로 설명하도록 하겠습니다.





엔터티 (Enitity)



< > & 와 같은 것들을 HTML에서 여러번 보았을 것입니다. 이것은 각각 < > &를 나타내지요.

이러한 것을 엔터티라고 합니다. 엔터티의 가장 일반적은 형태는 문자열을 특정 문자열로 대체하는 것이라고 할 수 있습니다.

예를 들어 만약 DTD문서에 다음과 같이 선언되어 있다면



<!ENTITY xml "eXtensible Markup Language">



이것을 XML 문서 내에서 사용할 때는 &xml;과 같이 사용합니다.

그럼 XML 프로세서는 &xml; 이 부분을 eXtensible Markup Lanaguage로 변환하여 사용하게 됩니다.



또한 엔터티는 이미지와 같은 Binary 데이터나 비 ASCII 문자를 대체하기 위해서도 사용된다고 합니다.

그리고 이러한 엔터티를 DTD에서도 사용할 수 있는데요. 그러한 것을 특별히 파라미터 엔터티라고 하기도 합니다.



대략적으로 엔터티에 대한 설명을 했는데요.. 솔직히 XML 구성요소에서 가장 설명하기가 난해한 것이라고 생각됩니다.

범위도 넘 넓구요.. 엔터티는 잘 사용하면 무지 편한데.. 개념이 도통 어려워서.. 제가 공력이 쌓이면 엔터티에 대한 글을 좀더 상세히 쓰도록 하죠..





주석 (Comment)



주석은 <!-- 와 --> 사이에 정의되고요. HTML에서와 같은 형태와 의미를 가지고 있습니다.

즉, 문서 자체에서 의미를 가지지 않고요. XML 프로세서가 문서를 해석할 때도 건너 뛰게 되지요.

그러므로 실제 XML 문서에 대한 설명을 위해서 주로 사용하게 되지요. <!-- 이부분은 <head>와 <body>를 위한 주석입니다. -->








CDATA 섹션 (CDATA Section)



모든 문자를 마크업이나 태그로 인식하지 않고 일반 문자로 인식하도록 할 수 있는 표기법입니다.

만약 <greeting>Hello World</greeting>



과 같은 형태로 사용하면 이것은 하나의 <greeting>이라는 엘리먼트가 되구요.. 그 엘리먼트의 내용이 Hello World가 되죠.

하지만 만약 전체를 문자열로서 사용하고 싶다면??

앞에서 엔터티란 것이 있었죠.. 엔터티를 활용해서 표현할 수도 있습니다.  그러나 모두 엔터티로 처리하게에는 좀 부담스럽죠.

그래서 등장한 것이 바로 CDATA섹션입니다.

  <![CDATA[

   <greeting>Hello World</greeting>

]]>



이렇게 사용하면 <greeting>Hello World</greeting>를 모두 문자열로 인식하게 됩니다.

XSL과 같은 문서에서 자바스크립트를 많이 사용하거든요.. 그때 이 CDATA 섹션을 많이 사용하게 됩니다.



여기까지 XML의 구성요소를 설명하였습니다. 함 정리 해 볼까요?

구성요소                                         설명

엘리먼트(Element)                        마크업 태그와 그안에 포함된 내용

빈 엘리먼트 (Empty Element)       데이터와 같은 내용을 포함하지 않은 엘리먼트

루트 엘리먼트 (Root Element)      문서내 모든 엘리먼트와 내용을 포함하고 있는 XML 문서의 엘리먼트

속성 (Attribute)                 엘리먼트에 포함되어 추가적인 정보를 제공

엔터티 (Entity)                  텍스트, Binary 데이터, 비 ASCII 문자를 저장하는데 사용

처리명령 (Processing Instruction) 전체 문서나 문서의 일부를 처리하는 응용 프로그램과 연결해 주는 명령어

주석 (Comment)                   XML 프로세서가 해석하지 않는 설명문

CDATA 섹션 (CDATA Section)       특수한 문자를 일반 텍스트로 인식하도록 하는 표기법



오늘은 여기까지입니다. 강좌를 올린다는게 참 어려운 작업인것 같네요.. ^^ 하지만 제 자료를 잘 정리해 놓는다는 기분으로 하면 될 것 같네요.. 그럼 2002/08/02  From 미니

2002/08/01 - [XML Developer/XML기초] - 1.1 XML이란?
2002/08/02 - [XML Developer/XML기초] - 1.2 XML의 시작
2002/08/02 - [XML Developer/XML기초] - 1.3 XML의 구성 요소
2002/08/02 - [XML Developer/XML기초] - 1.4 DTD란?
2002/08/02 - [XML Developer/XML기초] - 1.5 XML & DTD
2002/08/02 - [XML Developer/XML기초] - 1.6 XSL & XML
2002/08/02 - [XML Developer/XML기초] - 1.7 마치면서


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

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

1.6 XSL & XML  (0) 2002/08/02
1.5 XML & DTD  (0) 2002/08/02
1.4 DTD란?  (0) 2002/08/02
1.3 XML의 구성 요소  (0) 2002/08/02
1.2 XML의 시작  (0) 2002/08/02
1.1 XML이란?  (0) 2002/08/01




Trackback 0 And Comment 0

1.2 XML의 시작

|


2. XML의 시작

  무더운 8월입니다. ^^ 이 글을 첨 썼던 때가 2000년 12월이니까.. 와우.. 많은 시간이 흘렀네요.. 그때도 시간이 참 빠르다는 표현을 했던것 같은데~~

어느 사이트를 돌아다니다 보면 제 강좌를 복사해서 사용하는데도 있더라구요. 그래도 별 상관은 없지만.. 출처는 밝혀주심이 좋겠네요. 지난번만큼의 강좌를 다 수정해서 올리는데 약간의 시간이 걸릴거고요. 그리고 나서는 새로운 강좌를 시작할 겁니다.



자 그럼 오늘 강좌를 시작해 볼까요.. 소스는 강좌소스 에 보면 있습니다. 거기로 가서 받아가시기 바랍니다.



간단한 XML 예제

  XML 문서는 DTD의 포함 여부에 따라서 Well-formed 문서와 Valid문서로 나눌 수 있습니다.

먼저 새로운 단어를 분석해 볼까요?? Well-formed란 잘 구성되었다고 해석을 많이 하더군요.

잘 구성되었다?? XML 스펙을 보면 XML 문서가 갖추어야 할 조건들을 설명하고 있습니다. 

그 조건을 잘 지키고 있다면 Well-formed라고 하는 것이지요.



참고로 첨 XML 스펙을 보았을 때 머리가 돌아 버리는 줄 알았습니다. 완전히 암호문이더군요.

다행히 그당시 제가 학교에서 컴파일러를 배우고 있던 때라 그나마 다행이었죠.. 



그렇다면 Valid 문서란 무엇을 나타내느냐?? 기본적인 조건에 무언가를 하나 더 지키고 있다는 것이겠죠..

그게 바로 DTD라는 겁니다. DTD란 Document Type Definition의 약자로서 문서의 타입을 정의하는 것을 말합니다.

혹시 HTML 문서에서 한번쯤 이런 것 보지 못했나요??



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">




못봤나요?? 다시 한번 HTML소스를 보세요.. 직접 타이핑 한 것 말구 에디터로 만든 걸 보면 반드시 들어가 있을 겁니다.



어쨌든 그게 바로 DTD입니다. 문서의 타입은 정의해서 어디에 쓰는 걸까요? 

HTML에서 기본적으로 모든 시작은 <HTML>로 합니다. 그죠..



그리고 <HTML>내에서 <HEAD>와 <BODY>가 나옵니다.

즉,,



<HTML>

  <HEAD>

  ....

  </HEAD>

  <BODY>

  ....

  

</HTML>



기본 구조가 위와 같죠.. 자 제가 이걸 어떻게 알았을까요... 당연히 HTML책이나 강좌에 나와 있죠..

그럼 어떻게 모든 사람들이 저렇게 사용할까요? 그건 바로 DTD에 있습니다.

DTD에 그렇게 하라구 나와 있거든요.. 즉 사용자는 DTD에 나온 대로만 쓰면 됩니다.



그런데 때로는 <HEAD>를 빼먹고 안쓰는 사람들 많죠.. 

HTML은 그래도 인정했었지만 XML에서는 유효한 문서가 아니라고 하죠.. (Non-Valid 문서)

즉, DTD가 있으면 반드시 그대로 해야 한다는 거죠.. 물론 빼먹을 수 있도록 DTD에서 선언할 수도 있지만요..



음.. 보통 질문을 많이 하는 내용중의 하나가 "Document Type Definition"과 "Document Type Declaration"의 차이를 물어보는 겁니다. 

보통 DTD 문서를 "Document Type Definition"이라고 하지요..

그렇다면 "Document Type Declaration"은 무엇일까요?

이것은 XML 문서 내에서 <DOCTYPE> 요소를 사용해 DTD 문서를 선언하는 것을 말합니다.



즉, XML 문서가 

<xml version='1.0'>

<DOCTYPE aaa system..>

<aaa>





이런 형태로 되어 있을때, <DOCTYPE>으로 선언한 부분을 "Document Type Declaration"이라고 하는 것이죠..  ^^



그러면, 다음 그림은 우리가 최종적으로 보게 될 XML문서의 내용입니다. 





그럼 위와 같이 나타내지는 메모.xml의 내용을 살펴볼까요!! 

<?xml version="1.0" encoding="euc-kr"?>
<?xml:stylesheet type="text/xsl" href="메모.xsl"?>
<!DOCTYPE 메모 SYSTEM "메모.dtd" >
<메모>
        <헤더>
                <송신자>&me;</송신자>
                <수신자>홍길동</수신자>
                <수신자>이순신</수신자>
                <날짜>
                        <년>2000</년>
                        <월>12</월>
                        <일>9</일>
                </날짜>
                <제목>XML의 기본개념 과 활용방안</제목>
                <키워드>XML</키워드>
                <키워드>문서구조</키워드>
                <키워드>DTD</키워드>
        </헤더>
        <텍스트>
                <내용>
                        이글은 XML과 관련된 연재입니다. 다음과 같은 차례로 이루어져 있습니다.
                </내용>
                <목록 타입="도형">
                        <항목>XML이란?</항목>
                        <항목>XML 문서의 처리 - 엘리먼트, 속성, 엔터티..</항목>
                        <항목>XML, XSL 그리고 웹브라우저</항목>
                        <항목>XML 응용 분야 및 발전 가능성</항목>
                </목록>
        </텍스트>
</메모>





위 XML 문서의 내용을 하나씩 설명해 드리도록 하겠습니다.

첨이 아니신 분은 여기를 건너 뛰어도 될 것 같습니다. 

  <?xml version="1.0" encoding="euc-kr"?>



XML 선언이라는 부분입니다. 이 문서가 XML이라는 것을 가르쳐주고 있죠. 실제로 WML이나 SMIL과 같은 언어도 

이러한 선언으로 시작하는 것을 확인해 볼 수 있을 겁니다.



version이란 현재 XML 스펙 1.0을 지원한다는 것이구요. encoding은 사용할 언어를 지정합니다.

우리는 euc-kr이나 ksc5601로 지정하면 한글을 사용할 수 있습니다.

만약 이부분이 빠지면 당근 한글을 사용하지 못하게 되지요....

  <?xml:stylesheet type="text/xsl" href="메모.xsl"?>



XML 문서에서 <? ... ?> 이런 형태로 사용되는 것을 PI라고 부릅니다. 우리말로는 처리명령이라고 하더군요.

그중에서 가장 많이 사용될 PI인데요.. 스타일쉬트를 지정하는 것입니다.

앞에서 XML은 문서의 구조를 나타내는 부분과 포맷팅, 즉 보여주는 부분이 서로 다르다고 하였죠.

바로 그 포맷팅을 담당하는 것을 가리키는 부분입니다.



만약 이부분을 빼고 문서를 IE에서 볼 경우 특정 포맷이 정해지지 않았기에 그냥 문서의 내용이 보여집니다.

한번 그 부분을 삭제하고 브라우저에서 읽어 보세요.. 아까하고는 다르지요??

  <!DOCTYPE 메모 SYSTEM "메모.dtd" >



위에서 DTD를 포함하고 있는 문서는 Valid 문서이다 라고 설명했죠. 그러한 DTD를 지정하는 부분입니다. 이 부분이 바로 "Document Type Declaration"이죠.

간단히 의미를 해석하자면 System 즉, Local PC에 있는 메모.dtd란 파일을 DTD정의로 사용하구요.

그 메모.dtd의 루트 엘리먼트가 "메모"라는 것입니다.




엉~~ 루트 엘리먼트가 모야???

먼저 엘리먼트가 무엇인지부터 살펴보죠.. 위의 XML문서에서 <메모><헤더><텍스트>와 같은 것이 보이죠.

이런 것을 엘리먼트라 합니다. 우리가 HTML에서 태그라고 했던 것 있죠.. 그걸 생각하면 쉬울 겁니다.

하지만 XML에서는 

<헤더>을 시작 태그라 하구요. </헤더>를 닫는 태그라고 합니다.

그리고 <헤더>...</헤더>까지를 엘리먼트라고 하지요..



좀 이해가 되셨어요..



그리고 그중에서 특히 <메모>와 같이 가장 먼저 사용된 엘리먼트를 루트 엘리먼트라고 합니다.

문서를 트리구조로 만들 때 가장 위에 나타나게 되겠지요..

그럼 HTML에서 루트엘리먼트는 뭘까요??

당근 <html>이겠죠... 쿠쿠쿠~~ 쉽죠!!

  <송신자>&me;</송신자>



<송신자> 엘리먼트의 내용이 &me;라고 되어 있습니다. 이걸 엔터티 참조라고 하거든요.

실제 내용을 보면 이부분이 "김종민"이라고 바뀌어 있죠. 음~~ HTML에서 & 또는  정도를 생각하시면 될 것 같네요.

엔터티는 XML에서 좀더 복잡하고 다양하게 사용되지만 일단 간단한 문자열 대치정도로 생각해 두세요..

  <목록 타입="도형">



여기에서 타입="도형"이란 부분이 있죠.. 이것을 속성 노드라고 합니다. "타입"은 속성이름이구요.

"도형"은 속성값이 되지요.

HTML에서 < a href="xmlis.pe.kr">이 부분을 생각하면 금방 이해하실 수 있을 겁니다.



자! 오늘은 XML 문서의 예제를 보구요. 간단한 용어 설명을 했네요.

다음엔 XML의 구성요소에 대해서 좀더 자세히 살펴보도록 하죠..



자~ 그럼 더운 여름날 휴가철에 모두들 즐겁게 보내세요... 2002/08/02 From 미니

2002/08/01 - [XML Developer/XML기초] - 1.1 XML이란?
2002/08/02 - [XML Developer/XML기초] - 1.2 XML의 시작
2002/08/02 - [XML Developer/XML기초] - 1.3 XML의 구성 요소
2002/08/02 - [XML Developer/XML기초] - 1.4 DTD란?
2002/08/02 - [XML Developer/XML기초] - 1.5 XML & DTD
2002/08/02 - [XML Developer/XML기초] - 1.6 XSL & XML
2002/08/02 - [XML Developer/XML기초] - 1.7 마치면서

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

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

1.6 XSL & XML  (0) 2002/08/02
1.5 XML & DTD  (0) 2002/08/02
1.4 DTD란?  (0) 2002/08/02
1.3 XML의 구성 요소  (0) 2002/08/02
1.2 XML의 시작  (0) 2002/08/02
1.1 XML이란?  (0) 2002/08/01




Trackback 0 And Comment 0

1.1 XML이란?

|



1. XML 이란?

  참으로 오래간만에 사이트를 다시 열었네요.. 예전의 xmlis.pe.kr로 운영했었는데 사정상 이 사이트로 바꾸게 되었습니다. 지난번보다는 좀더 나은 강좌로 여러분을 찾아가고자 합니다. 그럼, 부족하지만 함 시작해 보기로 하겠습니다.

 

  이제는 SQL-2000은 보편화되어 많이 사용되고 있습니다. SQL-2000은 DB 차원에서 XML을 지원하기 시작한 거였죠.. 물론 그전에도 타미노나 엑서스였던가요? XML에서 출발한 DB는 있었지만-.- 그런데 얼마전 Oracle XML DB도 발표되었습니다. 자료를 보셨는지 모르겠군요.. 아마도 OTN 사이트에 가면 있을 겁니다.

 

  어쨌거나 XML은 1998년 2월 W3C에서 첨 XML 표준을 발표한 이래 정말 꾸준히 발전하면서 세인들의 관심을 끌어오고 있습니다. 엄청난 영향력인 셈이죠.. 아마도 이 사이트를 찾으신 분들도 그런 영향을 받지 않았을까 싶네요..

 

  우연찮게 저는 1998년 말부터 XML을 접하게 되었습니다. 그래서 XParser라는 XML파서도 개발하였구요. 각종 XML관련된 일을 하게 되었지요. 엥~~ 왠 지자랑!!

그래서 제가 알고 있는 조그마한 지식이나마 첨으로 XML을 시작하는 분들에게 도움을 줄 수 있으면~ 하네요.

 

에궁.. 서론이 넘 길었죠.. 자 이제부터 저랑 함께 XML의 세계로 접근해 보자구요!!

 

XML이 왜 필요하게 되었을까요?

 

웹에서 사용하기에 HTML은 지금도 잘 쓰이고 있습니다. 그죠.. 거기에 자바스크립트, DHTML, CGI, ASP, PHP...

을 통해서 이제는 동적인 페이지의 구성도 가능하죠.. 하지만 그 이면에는 우리도 느끼지 못하는 문제점이 있네요.

 

첫째로 NT-IIS-ASP-MSSQL, LINUX-Apache-PHP-MySQL 무얼 말하려는지 눈치 채셨나요?

바로 호환성입니다. 여기에 지금은 그나마 나아졌지만 초기에 IE와 넷스케이프의 호환도 엄청난 문제였죠.

즉, 정적인 HTML의 기능을 보완하다 보니 각 스크립트, 제품별로 상호호환이 안되는 거죠.

 

둘째로는 홈페이지를 새롭게 개편한다고 해보죠.. 디자인이 바뀌면 HTML페이지의 내용이 모두 바꿉니다.

그죠.. 물론 텍스트니까 복사&붙여넣기를 사용한다고 해도 넘 불편하죠..

즉, 디자인 부분만 바뀌면 되는데,, 데이터부분도 바꾸어야 하는 거죠..

 

셋째로 만약 악보를 웹에서 표현하고 싶다면 어떻게 할까요? 이미지로 그려야겠죠.. 그럼 그 그림을 다른 사람에게 보내면

그 사람이 그 악보를 해석해 낼 수 있을까요? 당연히 하죠.. 사람인데..

하지만 컴퓨터는 해석할 수 없죠... 이미지 프로세싱도 아니고 그림에서 어디가 '도''레''미'인지 컴퓨터가 어찌 알겠습니까?

 

이런걸 XML로 해결할 수 있다는 겁니다.

 

여기에서 잠시만 뻘소리를 좀 하자면, 제가 이렇게 막 XML이 좋다고 설명을 하면 마치 XML을 만병통치약 정도로 생각하는 사람들이 있습니다.

죄송하지만 아직 XML은 만들어지고 있는 언어입니다. 즉, 이론은 모두 나와 있지만 실제로는 제한된 부분만 구현이 되고 있습니다.

아마도 2~3년 내에는 실제로 모든 구현도 이루어 질수 있으리라고는 보지만,, 지금은 일단 추세를 따라가 주는 것이 중요할 듯합니다.

잠시.. 헛소리였습니다... 지송함다..

 

그렇다고 이러한 표준이 XML이 먼저는 아니었습니다. 아실분은 다 아시죠.. SGML(표준화된 일반 마크업 언어)라구요..

SGML은 실제로 정부 기관에서 많이 사용되었습니다. 하지만 넘 덩치가 큰 표준이었고요..

웹이 발달하기 이전에 나온 것이라 웹에 대한 지원이 미약했습니다. 하지만 이것이 바로 XML의 부모인 셈이죠..

XML은 SGML에서 사용되는 많은 기술들을 받아들여서 간소화하고 보완하면서 현재 발전해 나가고 있습니다.

아래 그림을 그걸 간단히 보여주고 있습니다.

                           <그림 : SGML과 XML의 관계>

 

자 이제 정리 해 보도록 하죠... 하~~ 역시 말로만 설명하는 건 넘 어렵죠.. 걱정 마세요. 담부터는 예제 중심으로 설명하도록 하죠.

지도 힘드네요.. 말도 잘 못하는 것이 주저리주저리 타이핑하려니 장난이 아니군요.. T__T


 

XML의 장점이 뭐죠?

 

1. 문서의 내용과 디자인이 완전히 분리 되어 있다는 겁니다. 즉, 문서의 구조와 프리젠테이션의 분리라 할 수 있죠.

문서의 구조는 XML문서를 통해서 트리구조의 구조적인 형태로 나타냅니다. 그리고 출력, 포매팅은 XSL 문서를 통해서 나타낼 수 있습니다.

   

2. 다양한 방식의 링크 기능을 제공합니다. XLink, XPointer를 이용하면 기존 HTML에서 이용하던 하이퍼링크 이상의 기능을 발휘할 수 있습니다.

자세한 내용은 강좌를 진행하면서 설명하도록 하죠.

 

3. 표준화된 DTD를 통해서 모든 분야에서 사용이 가능합니다. 요즘 많이 사용되는 WML, SMIL, SVG등이 모두 XML에 기반을 둔

언어입니다. 이것은 XML의 DTD를 선언하고 모든 사용자가 그 규칙에 맞추어 사용하면 컴퓨터나 사람이 모두 해석할 수 있는 메타 언어가 된다는 거죠.

 

야.. 갑작스럽게 어려운 용어가 많이 나왔네요.. 이론... 머리가 어지럽네요.. 앞으로 차근차근 제가 아는 것만큼 설명해 드리도록 하죠..

 

XML 문서의 구조와 포매팅의 구분

 

여기서는 참고로 XML의 구조와 포매팅의 분리에 대해서 설명을 좀 더 할까 합니다.

자동차를 하나 예로 들어서 설명을 해보죠.. 자동차 음~~ 현대 아반테의 엔진에 대한 설명서를 XML문서로 하나 가지고 있다고 해보죠.

 

그렇다면 지금 XML 문서는 준비가 되어 있는 겁니다. 그리고 포매팅을 할 수 있는 것이 없는 상태죠.

차 엔진 설명서에는 XML 형태로 아반테의 엔진에 대한 모든 내용이 포함되어 있습니다.

 

아반테를 생산하는 공장에서는 엔진을 조립하는 방법이 필요합니다.

그리고 차를 수리하는 카센타와 같은 곳에서는 엔진이 고장났을 때 수리하는 방법이 필요합니다.

마지막으로 차량 구입자에게는 아반테 엔진을 사용하는 방법의 설명서가 필요합니다.

 

이런걸 기존의 미디어라면 모두 각각 만들어야 합니다.

하지만 XML이라면 포매팅만 새롭게 해주면 기존의 XML문서를 이용하여 모두 만들어 낼 수 있습니다.

XML이라는 것이 좀더 매력으로 느껴지지 않으세요?? 안그런가? 쩝... 어쨌던~~

 

어떻게 그럴수 있을까요?? XSLT라고요.. XML을 변환하는 것에 대한 표준안이 W3C에서 이미 발표된 상태입니다.

각 벤더들이 그에 대한 솔루션을 각각 발표하겠죠..

 

또한 이 XSLT를 이용하면 다른 미디어로도 출판이 가능하다고 합니다.

즉, 위의 아반테 엔진을......

 

CD-ROM 버전으로 출판할 수 있구요.

웹에서 사용할 수 있는 형태로 출판할 수도 있구요..

요즘 많이 사용되는 PDA에서 사용할 있도록 나타낼 수도 있답니다.

 

실제로 제가 본 것은요.. XSL의 포매팅 객체 (Formatting Object)를 이용해서 PDF파일(아크로뱃리더)형식과 HTML과 WAP의

3가지 형태로 출력하는 외국의 사이트를 본적이 있네요.. (http://www.renderx.com/)

 

이제는 이런 형태의 XML이용이 점차 보편화 되고 있는 추세죠..


 

첫 강좌는 여기까집니다. 휴~~ 그럼.......   2002/08/01  From 미니

2002/08/01 - [XML Developer/XML기초] - 1.1 XML이란?
2002/08/02 - [XML Developer/XML기초] - 1.2 XML의 시작
2002/08/02 - [XML Developer/XML기초] - 1.3 XML의 구성 요소
2002/08/02 - [XML Developer/XML기초] - 1.4 DTD란?
2002/08/02 - [XML Developer/XML기초] - 1.5 XML & DTD
2002/08/02 - [XML Developer/XML기초] - 1.6 XSL & XML
2002/08/02 - [XML Developer/XML기초] - 1.7 마치면서

 

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

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

1.6 XSL & XML  (0) 2002/08/02
1.5 XML & DTD  (0) 2002/08/02
1.4 DTD란?  (0) 2002/08/02
1.3 XML의 구성 요소  (0) 2002/08/02
1.2 XML의 시작  (0) 2002/08/02
1.1 XML이란?  (0) 2002/08/01




Trackback 0 And Comment 0
prev | 1 | next