티스토리 뷰

XML Developer/XML기초

1.2 XML의 시작

미니~ 2002. 8. 2. 21:14
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 마치면서

 

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