HTML 최상단에 그냥 아무 생각없이 <!DOCTYPE>이라 치고있지 않은가?
DOCTYPE이란 Document Type Declaration 과 동의어고 "문서 형식 선언" 이라고 한다.
크게 두가지 이유로 DOCTYPE을 선언하는데 아래 두가지 이유가 있다.
HTML 문서가 어떤 문서 형식을 따르는지 알려주는 역할을 한다.
버전별로 선언하는 방식이 다르다.
HTML 4.01에서 DOCTYPE 선언은 SGML을 기반으로 하기 때문에 DTD를 참조해야 하지만 HTML5는 SGML을 기반으로 하지 않기 때문에 DTD를 참조할 필요가 없다.
DOCTYPE이 불필요하지만 브라우저들의 표준 모드 활성화를 위해 최소한의 형태로 유지된다.
<!DOCTYPE>
HTML 4.01에서는 DOCTYPE을 세 가지 방법으로 선언한다.
아래 DTD는 모든 HTML 요소와 속성들을 포함하지만, Deprecated거나 정식으로 포함되지 못한 요소들은 포함하지 않는다는 뜻이다
Strict DTD
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
아래 DTD는 모든 HTML 요소와 속성들뿐만 Deprecated, 정식으로 포함되지 못한 요소들도 포함하고 있다는 뜻이다.프레임셋(frameset) 콘텐츠의 사용은 허용하지 않는다.
Transitional DTD
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
아래 DTD는 모든 HTML 요소와 속성들, Deprecated, 정식으로 포함되지 못한 요소들, 프레임셋(frameset) 콘텐츠 모두 포함한다
Frameset DTD
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
XHTML 이나 그 이전 HTML, SVG 등등의 DOCTYPE은 웹퓨준을 정의하는 W3C https://www.w3.org/QA/2002/04/valid-dtd-list.html
에서 확인가능하다.
웹 브라우저는 웹표준을 지키지 않은 웹사이트를 위해서 다양한 모드를 지원하는데, 렌더링 모드란 웹 페이지를 번역, 읽는 방식이다. (글을 따로 써야한다 사실 간략하게 하겠다!)
이때 이 렌더링이 표준모드 (standards mode) 로 해야하는걸 알기 위해서 DOCTYPE을 선언한다.