HTML의 <!DOCTYPE> 태그는 해당 문서가 어떤 버전의 HTML을 사용하는지 브라우저에 알려주는 역할을 합니다. 이를 문서 타입 선언(DTD, Document Type Declaration)이라고 부릅니다.
<!DOCTYPE> 선언은 HTML 문서에서 가장 먼저 등장하며, 반드시 <html> 태그보다 앞에 위치해야 합니다. 또한 이 태그는 닫는 태그(closing tag)가 없다는 점도 특징입니다.
DOCTYPE이 제대로 선언되지 않으면 브라우저가 '호환 모드(quirks mode)'로 전환되어 의도하지 않은 레이아웃 깨짐 현상이 발생할 수 있습니다. 따라서 표준 모드(standards mode)로 일관성 있게 렌더링하기 위해서는 정확한 DOCTYPE 선언이 필수적입니다.
선언(Declaration)의 종류
HTML 4.01 시절에는 세 가지 DOCTYPE이 사용되었습니다. 바로 HTML 4 Strict, HTML 4 Transitional, HTML 4 Frameset입니다. 당시에는 작성하는 모든 HTML 문서가 이 세 가지 DTD 중 하나를 반드시 포함해야 했습니다.
1. HTML 4 Strict
Strict 문서 타입은 더 이상 권장되지 않는(deprecated) 요소와 프레임셋 문서 전용 요소를 제외한 모든 HTML 요소를 포함합니다. 표준에 엄격하게 맞춘 문서를 작성할 때 사용됩니다.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"https://www.w3.org/TR/html4/strict.dtd">2. HTML 4 Transitional
Transitional 문서 타입은 폐기된(deprecated) 요소까지 포함하여 모든 HTML 요소를 허용합니다. 기존에 작성된 구버전 코드와의 호환성을 유지해야 하는 문서에 적합합니다.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"https://www.w3.org/TR/html4/loose.dtd">3. HTML 4 Frameset
Frameset 문서 타입은 Transitional DTD의 모든 HTML 요소에 더해 프레임(frame) 문서에서 사용되는 요소까지 포함합니다. 화면을 여러 프레임으로 나누어 구성하는 문서에서 사용됩니다.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"https://www.w3.org/TR/html4/frameset.dtd">HTML5의 DOCTYPE 선언
HTML5부터는 복잡한 DTD 참조 없이 아래와 같이 단 하나의 간결한 선언만 사용합니다.
<!DOCTYPE html>
대소문자 구분 없이 짧게 작성할 수 있으며, 별도의 URL 참조가 필요 없기 때문에 실수로 잘못 입력할 가능성도 크게 줄었습니다. 현재 웹 문서를 작성한다면 대부분 이 HTML5 선언 방식을 사용하는 것이 표준입니다.