DTD 정의하기

오늘날의 HTML 문서를 보면 DOCTYPE 태그가 맨 윗 줄에 있습니다.

이는 문서의 형태를 정의하기 위한 태그로 영문 용어는 Document Type Definition. 줄여서 DTD라고 부릅니다. 이는 마크업 문서의 형태가 무엇인지 알리기 위한 선언용 태그입니다. 우선 XML의 예를 봅시다.

<?xml version="1.0" encoding="UTF-8"?>

XML 문서에서는 일반적으로 이런 형태의 DTD를 내장하고 있습니다. 이는 이 문서가 XML 문서임을 알리기 위한 코드입니다. (참고로, 대소문자를 구분하지 않습니다.)

HTML에도 이와 같은 DTD 코드를 쓰는 것이 원칙입니다. 다만, 웹 표준이 보급되기 전에는 생략하고 <html>부터 시작하는 일이 많았습니다. 이후 HTML 4.01 발표와 함께 규격이 세분화되면서 DTD가 없으면 코드를 잘못 인식하여 구조가 깨지는 일이 많아졌기에 DTD를 선언하게 된 것입니다.

HTML 4.01의 DTD는 다음과 같이 세 가지가 있습니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

첫 번째는 HTML 4.01 Strict, 두 번째는 HTML 4.01 Transitional, 세 번째는 HTML 4.01 Frameset입니다.

HTML 4.01 Strict
매우 엄격한 구문의 HTML 4.01 문서를 의미합니다. 이 DTD에서는 일부 비권장 태그(font 등)를 사용할 수 없습니다.
HTML 4.01 Transitional
다소 느슨한 구문의 HTML 4.01 문서를 의미합니다. 이 DTD에서는 Strict에서 사용이 제한된 일부 태그들도 사용할 수 있습니다.
HTML 4.01 Frameset
프레임셋 구조의 HTML 4.01 문서를 의미합니다. 프레임셋의 틀이 될 페이지는 앞의 두 DTD가 아닌 이 DTD를 사용하여야 합니다.

다음은 XHTML 1.x의 DTD입니다. 다음과 같이 네 가지가 있습니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

앞의 세 개는 각각 XHTML 1.0 Strict, XHTML 1.0 Transitional, XHTML 1.0 Frameset입니다. 이 세 개는 모든 태그에 닫는 태그를 필수적으로 넣어야 하는(예: <br><br />) 등 XML 문법에 기반하여 작성하여야 한다는 점을 제외하면 HTML 4.01의 그것과 같습니다.

네 번째는 XHTML 1.1입니다. 이는 XHTML 1.0 Strict와 XHTML 1.0 Transitional의 중간 성격을 가진 형식으로, 기본적으로는 Strict와 같지만 필요한 모듈을 추가해서 쓸 수 있다는 차이가 있습니다.

마지막으로, HTML5의 DTD는 다음과 같습니다.

<!DOCTYPE html>

이렇게 그냥 HTML 선언 하나만으로 끝납니다. 기존의 HTML 4.01 규격이 SGML에 기반하였으나 HTML5 규격이 다시 SGML로부터 탈피하였기 때문에 이와 같이 간단해졌습니다. HTML5 이전의 규격으로 제작하여야 할 특별한 이유가 없다면 앞으로의 홈페이지 제작에는 이 DTD를 사용하는 것을 권장합니다.

답글 남기기

이메일 주소는 공개되지 않습니다.