문서 형식 선언
'"문서 형식 선언"(Document Type Declaration) 또는 DOCTYPE이란 어떤 SGML이나 XML 기반 문서 내에 그 문서가 특정 문서 형식 정의(DTD)를 따름을 지정하는 것이다. 본래 DTD에 기반한 SGML 도구를 이용해 문서 해석 가능성과 유효성을 검사하기 위한 목적으로 문서 내에 삽입되었다.
HTML 문서의 규격 판 번호를 명시하는 데서 흔히 볼 수 있다. 웹 브라우저는 문서 형식 선언이 없는 HTML 문서를 쿼크 모드로 렌더링하지만 문서 형식 선언이 있는 HTML 문서를 표준 모드로 렌더링하기 때문에, 문서 형식 선언을 이용해서 어떤 웹 페이지가 모든 웹 브라우저에서 같은 레이아웃으로 제공되도록 할 수 있다. 한편 HTML5은 구조적으로 SGML과 호환될 수 없다. 따라서 HTML5로 구성된 문서에서 문서 형식 선언은 불필요하지만, 웹 브라우저들의 표준 모드를 활성화하기 위해 최소한의 형태로 유지되었다.
구조
편집문서 형식 선언은 주로 아래 두 가지 구조(PUBLIC, SYSTEM)로 사용된다.
<!DOCTYPE 최상위요소 PUBLIC "FPI" "URI"> <!DOCTYPE 최상위요소 PUBLIC "FPI" "URI" [ (추가 DTD 선언) ]>
여기서 PUBLIC은 DTD가 공중에게 공개되어 있으며 FPI를 부여받았다는 뜻이다. W3C 표준은 모두 FPI를 갖는다. URI를 생략할 경우, 페이지는 쿼크 모드로 렌더링 된다.
<!DOCTYPE 최상위요소 SYSTEM "URI"> <!DOCTYPE 최상위요소 SYSTEM "URI" [ (추가 DTD 선언) ]>
SYSTEM은 PUBLIC과 달리 FPI가 없을 때 사용한다. 이 때 추가 선언은 필요에 따라 사용할 수도, 사용하지 않을 수도 있다.
예시
편집HTML 4.01
편집HTML 4.01의 문서 형식은 Strict, Transitional, Frameset으로 나뉘며, 선언도 마찬가지이다. HTML 4.01 Strict는 표현 효과 위주의 마크업 태크들(<b>, <i> 등)을 금지한다.
<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
HTML 4.01 Transitional은 HTML 4.01 Strict에서 폐기된 몇 가지 태그를 허용한다.
<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
HTML 4.01 Frameset은 프레임 구조를 지원한다.
<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
XHTML 1.0
편집XHTML 1.0도 HTML 4.01과 같이 세 가지 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">
XHTML 1.1
편집XHTML 1.1은 XHTML 모듈화에 따라 정의되었으며, XHTML 1.0 Strict와 동등하게 엄격하다.
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
HTML5
편집HTML5은 구조상 DTD로 충분히 정의될 수 없으나 표준 문서를 명시할 필요성이 있으므로 아래와 같은 문서 형식 선언을 갖는다.
<!DOCTYPE html>