DTD (Document Type Definition)
Posted 2007/09/30 02:15, Filed under: Web StandardsDTD은 왜 작성해야 하나
DTD은 브라우저의 랜더링 모드를 지정해주고 유효성 검증기(Validator)의 기준이 되므로 (X)HTML 문서의 상단에 반드시 선언 해 주어야 합니다. 만일 DTD를 생략하거나 형식이 잘못된 문서일 경우에는 웹 브라우저마다 코드의 해석 방식이 다른 Quirks mode로 랜더링이 되기 때문에 엉뚱한 결과물로 출력되는 문제에 직면하게 됩니다.
DTD의 종류
웹 페이지에서 주로 사용하는 HTML 4.01 과 XHTML 1.0에는(2007년 기준) 각각 Strict, Transitional, Frameset 의 3가지 DTD가 있습니다. (XHTML1.1에서는 Transitional 과 Frameset은 파기되고 Strict 기반으로 재구성 되었습니다.)
HTML 4.01
- HTML 4.01 Strict DTD
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> - HTML 4.01 Transitional DTD
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> - HTML 4.01 Frameset DTD
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" http://www.w3.org/TR/html4/frameset.dtd">
XHTML 1.0
- XHTML 1.0 Strict DTD
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">- XHTML 1.0 Transitional DTD
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - XHTML 1.0 Frameset DTD
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.1
- XHTML 1.1 DTD
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
어떤 DTD를 선택해야 하는가?
XHTML은 데이터의 표현(Presentation)에 초점이 맞춰져 있는 HTML의 문제점을 개선하기 위해서 XML방식으로 구현한 언어이기 때문에 약간의 문법적인 차이를 제외하고는 HTML과 크게 다르지 않습니다. 하지만 XML 을 기반으로 만들어 졌으므로 이 둘의 차이점을 이해하지 못헸거나 기존의 웹사이트가 HTML 기반으로 제작되어 있다면 무리하게 XHTML을 고집할 필요는 없겠죠.
무엇보다 중요한 것은 Transitional DTD와 Strict DTD 타입의 선택 입니다. W3C는 CSS를 장려하기 위해 표현을 위한 태그를 엄격히 배제한 Strict DTD를 권고하고 있습니다만 기존의 수많은 웹사이트들을 한 순간에 변화 시킬 수는 없으므로 호환성 유지를 위해 과도기적 성질인 Transitional DTD를 사용할 수도 있도록 배려했습니다. 다시 말해서 (X)HTML과 CSS의 분리가 완벽히 이뤄 지느냐 그렇지 않느냐에 따라서 DTD를 정할 수 있다는 것이죠. 만약 (X)HTML 내에 표현을 위한 요소를 CSS로 분리가 된다면 Strict DTD를, 그럴 수 없는 환경이라면 Transitional DTD를 지정하시면 됩니다.
웹 표준은 XHTML?
웹 표준과 시멘틱한 웹사이트를 위해서는 XHTML 사용을 해야 한다는 말이 있지만 그 말은 사실이 아닙니다. XHTML 1.0 Transitional 보다는 HTML4.01 Strict의 규격이 구조와 표현을 더욱 엄격하게 구분 짓고 있으므로 무조건 XHTML이라는 말은 잘못 되었다고 볼 수가 있는 거죠. 고로 HTML이냐 XHTML이냐의 선택 보다는 제작하려는 사이트의 방향과 목적을 제대로 파악하고 그에 걸맞은 DTD 선택이 더욱 중요할 것입니다.
-
공감가는 내용이 많네요...:)
저같은 경우에 위지윅때문에 Transitional쓰고있는데 나중에 html5라던가 버전업이 되면 위지윅 어떻게 구현하게 될지 궁금하네요..:)-
html5를 무조건 따라가는 것 보다는 호환성을 우선시 해야겠죠. ^^
현재는 위지윅 에디터를 구현하기 위해 iframe을 보편적으로 사용하고 있지만 의미에 적합하지 않은 사용일 뿐더러 이미 알고 계시다 시피 Strict DTD나 XHTML1.1 에서는 사용할 수가 없습니다.
하지만 다행히도 HTML5 에서는 contenteditable 속성이 새롭게 제공되기 때문에 iframe을 끄집어 내야 하는 일은 없을 듯 하네요.
-