2012. 1. 26. 16:06

문서 객체 모델(DOM : Document Object Model)은 객체 지향 모델로써 구조화된 문서를 표현하는 형식이다. DOM은 플랫폼/언어 중립적으로 구조화된 문서를 표현하는 W3C의 공식 표준이다. DOM은 또한 W3C가 표준화한 여러 개의 API의 기반이 된다.

DOM은 HTML 문서의 요소를 제어하기 위해 웹 브라우저에서 처음 지원되었다. DOM은 동적으로 문서의 내용, 구조, 스타일에 접근하고 변경하는 수단이었다. 브라우저 사이에 DOM 구현이 호환되지 않음에 따라, W3C에서 DOM 표준 규격을 작성하게 되었다.
- 위키백과 "문서 객체 모델" 인용 

문서 객체 모델을 어떻게 설명해야 하는가? 기반이 되는 개념들을 설명한 후에 종합하는 것이 유리할 것 같다. 어떠한 개념들이 있는가 나열하기 보다는 위키 백과의 요약된 설명을 인용했다. 위키 백과는 많은 기술과 용어들을 소개하고 있지만 불친절한(?) 해설들이 꽤 많다. 백과사전은 매뉴얼과 다르다 라고 이해하는게 정신 건강에 좋을 것 같고, 어쨋든 잘 정리된 정보인 것은 확실하다.

DOM에 포함된 다양한 개념들을 하나씩 파헤쳐 보자.

1. 문서 혹은 구조화된 문서

일반적으로 문서는 특정 주제를 다룬 문장 혹은 글의 집합이라고 설명할 수 있다. "구조화된 문서(structured document)"는 계층적(hierarchical) 형태 혹은 트리(tree) 형태로 만들어진 문서를 말한다. 달리 말하자면, 문장들이 순서대로 읽을 수도 있지만, 문장, 단락(paragraph) 혹은 단어 간에 부모/자식/형제 관계가 존재한다는 말이다. 구조화된 문서들은 사용자에게 보여지는 방식에 따라서 부모/자식 관계가 눈에 보이기도 하고, 보이지 않는 경우도 있다. 또한, 문서 내부에 삽입되어 있지만 시각화 되지 않는 정보들도 있다.

2. 객체 지향 모델

객체지향 문서라는 표현이 이상하게 여겨질 수 있다. 객체는 "행위"와 "자료"를 함께 묶어둔 프로그램 부품을 말하는데, 문서에도 "행위"가 존재할까? DOM으로 표현된 문서에 표현된 "행위"는 문서 자체가 동작하는 것이 아니라, 문서에 포함된 다양한 요소(element)들을 편집하는 방법을 규정한 것이다.

3. 플랫폼/언어 중립적

DOM 문서는 유닉스, 리눅스, 윈도우 등 거의 모든 운영체제에서 읽고 쓸 수 있다. 또한 DOM 문서는 자바, 자바스크립트, C, Perl 등 다양한 프로그래밍 언어를 이용해 작성하거나, 조회할 수 있다. 이를 위해, W3C는 DOM 문서를 조작할 수 있는 API들을 정의했다.

4. DOM API

W3C는 DOM 문서를 편집할 수 있도록 다양한 API들을 제안(엄격히 지켜야 하는 규정은 아니다) 했다. W3C를 지지하는 다양한 프로그램 개발 조직 및 개발자들은 W3C에서 제안한 API를 다양한 언어와 라이브러리로 구현하였다.

함께 읽으면 좋은 글 : 
DOM 이해하기 (한글) - IBM
Posted by 곽중선