문서 객체 모델
위키백과 ― 우리 모두의 백과사전.
문서 객체 모델(DOM; Document Object Model)은 객체 지향 모델로써 구조화된 문서를 표현하는 형식이다. DOM은 플랫폼/언어 중립적으로 구조화된 문서를 표현하는 W3C의 공식 표준이다. DOM은 또한 W3C에 의해 표준화된 다수 API의 기반이 된다.
DOM은 HTML 문서의 요소(엘레멘트; element)를 조작하기 위해 웹 브라우저에서 처음 지원됐다. DOM은 동적으로 문서의 내용, 구조, 스타일에 접근하고 변경하는 수단이었다. 브라우저 간의 DOM 구현이 호환되지 않음에 따라, W3C에서 DOM 표준 명세를 작성하게 되었다.
DOM은 문서의 기반이 되는 데이터 구조에 제한을 두지 않는다. 잘 구조화된 문서는 DOM을 사용하여 트리 구조를 얻어낼 수 있다. 대부분의 XML 해석기와 XSL 처리기는 나무 구조의 이용에 대응해 개발되었다. 이 같은 구현에서는 문서의 전체 내용이 해석되어 메모리 저장되어야 한다. 때문에 DOM은 문서 요소가 임의적으로 접근되고 변경 가능해야 하는 응용프로그램에 가장 적합하다. 한 번 해석 시 단 한 번의 선택적 읽기/쓰기가 이루어지는 XML 기반 응용프로그램에서, DOM은 메모리에 상당한 부하를 가져온다. 이 경우처럼 속도와 효율적인 메모리 소비가 중요한 상황일 경우라면 SAX 모델이 장점을 가진다.
목차 |
[편집] DOM 수준
현행의 DOM 명세는 2수준(Level 2)이다. 그러나 일부 3수준(Level 3) 명세 역시 현재 W3C의 권고안이다.
- 0수준
- DOM이 만들어지기 이전의 모든 벤더 종속적인 DOM을 포함한다. 예: document.images, document.forms, document.layers, document.all. 단, 이것은 W3C에 의해 공식적으로 출판된 명세가 아니며, 표준화 과정 이전에 있었던 단계에 대한 표현이다.
- 1수준
- DOM 문서에 대한 탐색과 조정
- 2수준
- XML 명칭 공간(네임스페이스; namespace) 지원, 필터링된 뷰(view)와 DOM Events.
- 3수준
- 6가지 다른 명세로 구성: 1) DOM 3수준 Core; 2) DOM 3수준 Load and Save; 3) DOM 3수준 XPath; 4) DOM 3수준 Views and Formatting; 5) DOM 3수준 Requirements; 6) DOM 3수준 Validation;
[편집] 웹 브라우저간의 비호환 문제
브라우저간의 DOM 구현의 차이 때문에 상호 운용성 문제가 생기게 되었다.
마이크로소프트의 인터넷 익스플로러 브라우저는 2005년 현재 사실상의 표준 웹 브라우저의 위치를 차지하고 있기 때문에, 모질라와 같이 표준을 준수하는 브라우저에 대한 개발에 곤란한 문제가 된다. 만약 개발자가 마이크로소프트의 DOM 확장을 사용한다면 표준 준수에 대한 신뢰성을 잃을 수 있으며, 반대의 경우라면 비표준 확장을 사용하지 않음으로 생기는 기능적 제약 때문에 사용자가 이탈할 수도 있다. 얄궂게도 마이크로소프트와 넷스케이프 양쪽 다 표준 경쟁의 와중에서 비표준 기능을 퍼트리게 된 것에 대한 책임을 피할 수 없다. 더구나 최근의 상황을 빼면, 역사적으로 언제나 인터넷 익스플로러의 표준 지원이 넷스케이프의 그것에 비해 우위에 있었다.
만약 표준 호환 브라우저가 웹 시장에서 주목할 만한 점유율을 차지하게 된다면 이 같은 상황이 바뀌게 될 것이며, 비표준 확장을 사용하는 것이 작성자에게 상업적 불이익으로 다가올 것이라는 것에 대해서는 일반적으로 의견이 일치하고 있다.
[편집] 기술 명세
- DOM 1수준 기술 명세
- 2수준 권고안:
- 3수준 권고안:
- 3수준 작업 그룹 노트:
[편집] 같이 보기
- 문서 객체 모델 이벤트
- SAX - 순차적 방법으로 XML 문서에 접근/수정하는 API 집합
- JDOM - DOM, SAX, 그리고 문서를 작성을 위한 사용자 해석기를 통합한 XML용 자바 기반 문서 객체 모델