문서 객체 모델

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
HTML
HTML.svg
v  d  e  h

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

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

DOM은 문서의 기반이 되는 데이터 구조에 제한을 두지 않는다. 잘 구조화된 문서는 DOM을 사용하여 트리 구조를 얻어낼 수 있다. 대부분의 XML 해석기와 XSL 처리기는 트리 구조의 이용에 대응해 개발되었다. 이 같은 구현에서는 문서의 전체 내용이 해석되어 메모리 저장되어야 한다. 때문에 DOM은 문서 요소가 임의적으로 접근되고 변경할 수 있어야 하는 응용 프로그램에 가장 적합하다. 한 번 해석 시 단 한 번의 선택적 읽기/쓰기가 이루어지는 XML 기반 응용 프로그램에서, DOM은 메모리에 상당한 부하를 가져온다. 이 경우처럼 속도와 효율적인 메모리 소비가 중요한 상황일 경우 SAX 모델이 장점을 가진다.

DOM 단계[편집]

현행의 DOM 규격은 단계 2이다. 그러나 일부 단계 3 규격 역시 현재 W3C의 권고안이다.

단계 0 
DOM이 만들어지기 이전의 모든 벤더 종속적인 DOM을 포함한다. 예: document.images, document.forms, document.layers, document.all. 그러나 이것은 W3C이 공식적으로 공개한 규격이 아니며, 표준화 이전에 있던 단계를 말한다.
단계 1 
DOM 문서에 대한 탐색과 조정
단계 2 
XML 명칭 공간(네임스페이스; namespace) 지원, 필터링된 뷰(view)와 DOM 이벤트.
단계 3 
6가지 다른 규격으로 구성: 1) DOM 단계 3 코어. 2) DOM 단계 3 불러와서 저장(Load and Save). 3) DOM 단계 3 XPath. 4) DOM 단계 3 보기 및 초기화(formatting). 5) DOM 단계 3 요구사항. 6) DOM 단계 3 유효 확인.

웹 브라우저간의 비호환 문제[편집]

브라우저간의 DOM 구현의 차이 때문에 상호 운용성 문제가 생기게 되었다.

마이크로소프트의 인터넷 익스플로러 브라우저는 2005년 현재 사실상의 표준 웹 브라우저의 위치를 차지하고 있기 때문에, 모질라와 같이 표준을 준수하는 브라우저에 대한 개발에 곤란한 문제가 된다. 만약 개발자가 마이크로소프트의 DOM 확장을 사용한다면 표준 준수에 대한 신뢰성을 잃을 수 있으며, 반대의 경우라면 비표준 확장을 사용하지 않음으로 생기는 기능적 제약 때문에 사용자가 이탈할 수도 있다. 얄궂게도 마이크로소프트와 넷스케이프 양쪽 다 표준 경쟁의 와중에서 비표준 기능을 퍼트리게 된 것에 대한 책임을 피할 수 없다. 더구나 최근의 상황을 빼면, 역사적으로 언제나 인터넷 익스플로러의 표준 지원이 넷스케이프의 그것에 비해 우위에 있었다.

만약 표준 호환 브라우저가 웹 시장에서 주목할 만한 점유율을 차지하게 된다면 이 같은 상황이 바뀌게 될 것이며, 비표준 확장을 사용하는 것이 작성자에게 상업적 불이익으로 다가올 것이라는 것에 대해서는 일반적으로 의견이 일치하고 있다.

같이 보기[편집]

  • 문서 객체 모델 이벤트
  • SAX - 순차적 방법으로 XML 문서에 접근/수정하는 API 집합
  • JDOM - DOM, SAX, 그리고 문서를 작성을 위한 사용자 해석기를 통합한 XML용 자바 기반 문서 객체 모델

바깥 고리[편집]