HTML은 World Wide Web에 하이퍼텍스트를 게시하기 위한 범용 언어입니다[1]. Tim Berners-Lee가 HTML의 원래 정의를 확립하기 위해 SGML을 단순화한 1982년부터 2001년 XHTML1.1 사양이 출시될 때까지 HTML은 여러 버전으로 국제 표준이 되었습니다[2]. 사양의 각 버전은 법적 구조, 요소 및 속성을 설명하는 기계 판독 가능 언어로 정의됩니다. 이것이 바로 문서 유형 정의(DTD)입니다.
DTD는 HTML 문서의 앞부분에 있는 문서 유형 선언(DTD 선언, doctype[3]이라고 함)을 설명합니다. 이는 문서와 DTD 명령 간의 링크입니다. 예를 들어 HTML4.01 Strict의 doctype은 다음과 같습니다.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" " http://www.w3.org/TR/html4/strict.dtd ">
문서에서 사용하는 HTML의 버전을 나타내는 것으로, 문서를 파싱할 때 브라우저 등의 도구에 필요한 가장 중요한 정보입니다. 예를 들어 W3C의 유효성 검사 도구는 이를 사용하여 구문을 확인하고 오류를 지적할 수 있습니다.
초기 브라우저의 잘못된 표준 구현, 개인 확장의 확산, 향후 호환성을 위한 초기 표준 자체의 혼란으로 인해 당시 문서에는 문서 유형이 없거나 DTD에 대한 직접적인 참조가 없었으며 이로 인해 새로운 표준 구현도 어려워졌습니다. . 브라우저가 이를 구분할 수 없었기 때문에 채택과 인기를 얻었습니다. 웹 표준에 따라 생성된 웹 페이지와 기존 관행에 따라 생성된 웹 페이지를 처리하기 위해 Todd Fahrner는 1998년에 "came with a 전환" 방법을 제안했습니다[4]. 이 방법을 통해 브라우저는 두 가지 렌더링 모드 세트를 제공할 수 있습니다. : 즉, 완전한 doctype 문서는 W3C 표준을 사용하여 구문 분석됩니다. 그렇지 않으면 이전 방식으로 구문 분석됩니다.
이 방법은 실용적이고 간단하며 효과적입니다. 2년 후, IE의 Mac 버전에서 처음 사용되었고, 곧 다른 브라우저 제조업체에서도 이를 채택했습니다. 이로 인해 doctype sniffing(doctype sniffing 또는 doctypeswitching)이 탄생했습니다. 브라우저는 이를 사용하여 엔진이 표준 모드, 준표준 모드 또는 특수 모드를 채택해야 하는지 결정합니다. 이는 HTML 및 CSS 구문 분석, CSS 레이아웃 및 JavaScript 스크립트에 큰 영향을 미칩니다[5]. 가능한 한 표준 모델을 사용해야 한다는 점에는 의심의 여지가 없습니다.
HTML5는 아직 초안 단계이지만 최신 브라우저인 Firefox3.5, Chrome2, Safari4 및 IE8에서는 일부 기능을 지원하기 시작했습니다. 특히 Google Wave의 출시로 인해 HTML5 실행이 급증했습니다. HTML5는 SGML을 기반으로 하지 않고 DTD도 없지만 향후 호환성을 위해 doctype 스니핑 사실을 받아들이고 doctype이 text/html의 유일한 모드 변환 문이며 다른 용도는 없다고 정의합니다. 그 문서 유형은 매우 간결합니다: <!doctype html>[6].
IE8은 상위 호환성 문제를 해결하기 위해 X-UA-Compatible 문[7]을 채택했다는 점을 언급할 가치가 있습니다. 결과적으로 IE8의 브라우저 렌더링 모드는 문서 유형 스니핑뿐만 아니라 X-UA-Compatible 문에도 의존합니다. 이는 패턴 판단을 더욱 복잡하게 만들 뿐만 아니라[8] 웹 디자인의 점진적인 향상 아이디어에 위배됩니다[9].
웹 표준으로 가는 길에는 현실주의가 가득한 상위 호환성뿐만 아니라 이상주의가 가득한 하위 호환성도 필요합니다. 이것이 바로 우리 웹이 미래에도 제대로 작동할 수 있다는 희망입니다. 표준, 단순성 및 점진적인 향상이라는 아이디어 하에 현재 우리 페이지에 가장 적합한 솔루션은 다음과 같습니다.
<!doctype html> … <meta http-equiv="X-UA-Compatible" content="IE=Edge"> …
메모:
[1] HTML은 전 세계에 하이퍼텍스트를 게시하기 위한 공용어입니다.
와이드 웹
[2] http://zh.wikipedia.org/wiki/Html
[3] 이전 사양에서는 DTD 선언을 종종 문서 유형 선언(Document Type Declaration)이라고 불렀습니다.
DTD와 혼동하기 쉽습니다.
[4] http://web.archive.org/web/20030212115103/http://www.geocrawler.
com/archives/list-name.mbox/123/1998/7/0/1037920/
[5]doctype으로 브라우저 모드 활성화
[6] http://www.w3.org/TR/html5/syntax.html#the-doctype
[7] 문서 유형을 넘어 웹 표준화가 IE8과 호환됩니다.
[8] http://dancewithnet.com/2009/06/14/aactivate-browser-modes
-with-doctype/#ie8modes
[9] 웹 표준의 미래는 브라우저 기술에 달려 있습니까?