본문 바로가기

학습컨텐츠/XML

XML다루기 - 2. XML이란

XML을 저는 아래와 같이 정의하겠습니다.

 

언어를 만들기 위한 언어라니 조금 이상하지요? 앞에서 XML이란 것이 data를 다루기 위한 언어라는 것은 말했었는데요. 그런데 XML이란 것이 사실 data를 직접 관리하거나 분류하지는 않습니다. 그러한 작업을 하는 언어를 만들어내는 것이 바로 XML이지요. 다시 말하면 XML이란 언어를 만들어내는 언어인 것입니다. (이러한 언어를 Meta-Language 라고 합니다.)

만들어 낸다는 표현이 조금 모호할 수 있겠습니다. 좀더 분명히 얘기하면 새로운 markup language의 문법을 XML이 정의한다고 할 수 있겠네요. 정의하는 방법에 대해선 조금 뒤에 DTD(Document Type Definition)을 설명할 때 말씀 드리겠습니다.


이제 위의 Definition을 조목조목 이해해 봅시다. 일단 data를 알맞게 tagging한다는 것이 무엇일까요?




Tagging

여러분! 블로그나 자신의 홈페이지에 자료를 올릴 때, tag를 달아준 적이 있나요? 그 때, tag의 의미가 무엇인가요? 바로 여러분이 올리는 자료에 대한 정보입니다. 즉, tag를 KAIST라고 달았다면 방금 내가 올린 자료가 KAIST에 관련된 자료라는 정보를 얘기해 주는 것이죠. 이렇게 data에 대한 data를 사람들은 meta-data라고 부릅니다.

Data를 알맞게 tagging한다는 것은, 곧 여러분이 여러분의 자료에 tag를 단 것과 같은 작업입니다. Data가 어떤 data인지 표시해주는 것이지요. 아래가 아주 간단한 예입니다.

Ex) <이름>홍길동</이름>

홍길동이라는 자료에 이름이라는 tag를 붙여주었네요.


계층적 분류

이제 다시 한번 정의를 봅시다. Data를 계층적으로 분류한다는 것은 무슨 의미일까요? Data라고 다 똑같은 data가 아닙니다. 여러분이 컴퓨터 하드디스크의 폴더들을 어떤 식으로 구성하는지 한번 생각해보세요. 모든 파일이 C드라이브 위에 있지는 않지요. 상위폴더 하위폴더들이 계층적으로 이루어져있습니다. 마찬가지입니다.

계층적 분류란, Data가 많아질 때 그것들을 보기 좋게 분류하기 위해 단계를 두는 것입니다.

자 그럼 한번 예시로 xml문서를 볼까요?

 

위는 실제 어떤 *.xml 파일의 일부분입니다. 아까 말했듯이 적절한 tagging과 계층적 구조를 이용하여 두 권의 책 정보를 저장하고 있군요. 그리고 이 XML문서는 xml으로 만든 BML이라는 markup language를 사용하고 있습니다.

(BML이란 book markup language입니다. 제가 임의로 만든 언어이죠)


이제 XML이란 것이 무엇인지 대충 감이 오나요? 위와 같은 <book>, <title>같은 tag를 쓸 수 있도록 정의해주는 언어가 XML이고 위의 *.xml파일은 XML으로 쓰여진 것이 아니라 XML로 정의된 어떤 markup language(즉, 여기서는 BML)에 의해 쓰여진 문서이죠.


아니 그렇다면 왜 헷갈리게 *.xml이라는 확장자를 쓰는 것이며!

또 헷갈리게 xml 문서라고 부르는 것일까요? 이 궁금증은 다음 장에서 XML문서를 이야기하며 해결해봅시다.