Xml

서두

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

이 부분은 XML 선언이라는 부분이다. 이 문서가 XML이라는 것을 가르쳐주고 있죠. XML 선언은 생략 가능하지만, 선언하는 것이 권장사항이다. 선언에는 XML 권고안(Recommendation)의 버전, 문서의 인코딩(encoding) 방식, 그리고 스탠드얼론(standalone) 문서여부에 대해 기술하도록 되어있다.

version이란 현재 XML 스펙 1.0을 지원한다는 것이고요. Encoding을 euc-kr이나 ksc5601로 지정하면 한글을 사용할 수 있다. 만약 이 부분이 빠지면 한글을 사용하지 못하게 되지요

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

XML 문서에서 <? … ?> 이런 형태로 사용되는 것을 PI(Processing Instruction)라고 부릅니다. 위의 예시에서 나온 PI는 PI 중에서 가장 많이 사용될 PI인데요. 스타일시트(style sheet)를 지정하는 것이다. PI란 말 그대로 xml을 Processing, 즉 처리할 때 어떻게 처리할지 지시해주는 부분이다. 나중에 XML의 장점을 설명할 때 설명드릴 것이지만 XML은 문서의 구조를 나타내는 부분과 포맷팅(formatting), 즉 보여주는 부분이 서로 다릅니다. 위의 PI는 바로 그 포맷팅을 담당하는 것을 가리키는 부분이라고 할 수 있지요. 만약 이 부분을 빼고 문서를 IE에서 볼 경우 특정 포맷이 정해지지 않았기에 그냥 문서의 내용이 보여진다.

<!DOCTYPE booklist SYSTEM "booklist.dtd" >

위에서 XML이란 markup언어의 문법을 정의하는 언어라고 설명하였죠. DTD파일이란 markup언어의 문법을 XML로써 정의하는 파일이고 위의 괄호는 그러한 DTD를 지정하는 부분이다. 이 부분은 현재 문서가 "메모.dtd"라는 파일에 정의된 문법에 따라 만들어진 문서임을 알려주는 것이죠.

이 문서유형 선언 부분은

<!DOCTYPE 루트엘리먼트 SYSTEM "DTD문서의 위치"> 와 같은 형태를 가지며, 위의 예시에서는 루트엘리먼트가 <booklist>이므로 booklist라는 값을 가지게 된다.

엘리먼트

이제 엘리먼트 부분을 봅시다.

<booklist>
<book kind="소설">
<title>시인과도둑</title>
<author>이문열</author>
</book>
</booklist>

일단 모든 XML문서는 단 하나의 루트 엘리먼트(root element)를 가진다. 그 외의 모든 엘리먼트들은 루트 엘리먼트로부터 파생된 엘리먼트들이죠.

각각의 엘리먼트가 가질 수 있는 것은 크게 두 가지 이다. 바로 속성(Attribute)와 내용(content)이다.

Attribute란 엘리먼트 스스로의 정보를 나타내 주는 것이며, Content란 엘리먼트가 가질 수 있는 data를 뜻한다. 루트 엘리먼트를 포함한 모든 엘리먼트는 Content로 문자 데이터와 엘리먼트(자식 엘리먼트)를 가질 수 있다.

예시를 보면 Booklist라는 루트 엘리먼트는 book이란 자식 엘리먼트를 가지고 있고, book이란 엘리먼트는 kind라는 속성과 title, author라는 자식 엘리먼트를 가지고 있다. Title, author라는 엘리먼트는 각각 content로 문자 데이터를 가지고 있죠.