본문 바로가기

먹고살거/HTML,CSS

HTML - DTD

DTD (Document Type Definition)

 

DTD 종류

 

DTD은 왜 작성해야 하나

DTD은 브라우저의 랜더링 모드를 지정해주고 유효성 검증기(Validator)의 기준이 되므로 (X)HTML 문서의 상단에 반드시 선언 해 주어야 합니다.

만일 DTD를 생략하거나 형식이 잘못된 문서일 경우에는 웹 브라우저마다 코드의 해석 방식이 다른 Quirks mode로 랜더링이 되기 때문에

엉뚱한 결과물로 출력되는 문제에 직면하게 됩니다.

 

웹 페이지에서 주로 사용하는 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로 분리가 된다면 StrictDTD를, 그럴 수 없는 환경이라면 Transitional DTD를 지정하시면 됩니다.

웹 표준은 XHTML?

웹 표준과 시멘틱한 웹사이트를 위해서는 XHTML 사용을 해야 한다는 말이 있지만 그 말은 사실이 아닙니다. XHTML 1.0 Transitional 보다는 HTML4.01 Strict의 규격이 구조와 표현을 더욱 엄격하게 구분 짓고 있으므로 무조건 XHTML이라는 말은 잘못 되었다고 볼 수가 있는 거죠. 고로 HTML이냐 XHTML이냐의 선택 보다는 제작하려는 사이트의 방향과 목적을 제대로 파악하고 그에 걸맞은 DTD 선택이 더욱 중요할 것입니다.

 

 

xhtml과 dhtml의 차이점

가장 중요한 차이점 :

  • xhtml의 요소는 반드시 적합하게 중첩 되어 있어야 한다. (xhtml elements must be properly nested)
  • xhtml의 요소는 반드시 항상 닫혀 있어야 한다.(xhtml elements must always be closed)
  • xhtml의 요소는 반드시 소문자 이어야 한다.
  • xhtml 문서는 반드시 하나의 Root element 만을 가져야 한다.