이전 글에서는 HTML 문서의 구성에 대해서 주로 다루었고, 표면적으로도 다루었습니다. on it 이 글에서는 HTML 문서에 등장하는 첫 번째 중요한 요소인 DOCTYPE을 개념적으로 소개하겠습니다. 소위 DOCTYPE은 원래 XML의 개념입니다. XML 문서에 표시할 수 있는 요소와 각 요소의 구성, 중첩 규칙 등이 있습니다. 더 자세한 결과는 WIKI에서 얻을 수 있습니다. 🎜>그러나 HTML에서 DOCTYPE은 몇 가지 다른 효과를 가지며 그 중 하나입니다. 브라우저 표준 모드를 실행하는 유명한 기능입니다. 즉, DOCTYPE이 없으면 브라우저는 State라는 이상한 모드로 들어갑니다. 이 모드에서는 브라우저의 상자 모델, 스타일 분석이 수행됩니다. , 레이아웃 등은 표준에서 지정한 것과 다릅니다. 소위 HTML 표준 및 DOM 표준 등은 언급한 대로 표준 모드의 개념과 동작만을 규정하고 있습니다. 문서 구조에서 DOCTYPE은 HTML 문서에 절대적으로 필요한 부분이므로 "Quirks 모드"라는 개념이 전혀 없습니다. 표준에서는 Quirks 모드에 대한 규정을 만들지 않기 때문에 브라우저마다 Quirks 모드를 다르게 처리합니다. HTML4 DOCTYPEHTML4 표준에서는 "HTML 버전 정보" 장에 DOCTYPE이 포함되어 있으며 이 표준에서는 세 가지 유형의 DOCTYPE을 지정합니다. : 엄격 모드: . 전환 모드: 프레임 모드: HTML4 표준에서는 각 DOCTYPE에 해당하는 dtd 파일이 합법적인 URL로 지정되어 있으며, 브라우저는 다음에 따라 dtd의 특정 내용을 얻을 수 있습니다. 현실은 다릅니다 HTML4는 XML처럼 상당히 이상적인 표준이지만 현실은 그리 이상적이지 않은 경우가 많습니다. 다음 HTML 문서: I'm not a frameset So what? 로그인 후 복사이 문서는 프레임 모드 DOCTYPE을 사용하지만 본문에는 요소를 사용하지 않으므로 엄격 모드 또는 전환 모드에서 지정해야 하는 표준 HTML 구조를 사용합니다. 이 경우 브라우저는 무엇을 할 수 있습니까? 페이지 렌더링을 거부합니까? 아니요, 치열한 시장 경쟁에서 이로 인해 일부 페이지를 렌더링할 수 없는 경우 브라우저는 이를 감히 수행할 수 없습니다. 오직 시계만 시장 점유율을 다른 분야로 주입했습니다. 따라서 브라우저는 기껏해야 약한 경고만 보고할 수 있지만 여전히 문서를 구문 분석하고 올바르게 렌더링해야 합니다. 이것은 소위 브라우저의 "내결함성"입니다. 실제로 DOCTYPE이 무엇이든 브라우저는 가장 호환성이 높은 문서를 구문 분석하고 문서를 표시하기 위해 최선의 노력을 기울입니다. 개발자의 기대에 부응합니다. 브라우저의 이 기능으로 인해 표준 설정자는 DOCTYPE이 별로 중요하지 않은 것 같다는 사실을 점차 깨닫게 되었습니다. 따라서 HTML5에서는 DOCTYPE이 크게 변경되었습니다...HTML5의 DOCTYPE이 HTML5에 들어왔습니다. HTML5는 DOCTYPE 선언을 단순화하고 만 필요합니다. 위에서 언급했듯이 HTML4 시대에 표준 제작자들은 DOCTYPE이 지루한 w3c 유효성 검사기 를 제외하고는 브라우저 렌더링에 그다지 도움이 되지 않는다는 것을 깨달았습니다. DOCTYPE은 브라우저 호환 모드만 실행하는 것 같습니다. . 그래서 표준 작업 그룹은 매우 실용적인 태도를 취하고 모든 과정에 대해 표준 모드를 실행하는 가장 간단한 DOCTYPE을 테스트한 결과 마침내 이러한 결론에 도달했습니다. 그러나 이야기는 그렇게 간단하지 않을 것입니다. 표준 실무 그룹은 그렇게 단순한 작업을 완료하고 포기하는 악당이 아닙니다. 실제로 그들은 여전히 하위 호환성, 확장성 등을 양심적으로 고려합니다. 결국, DOCTYPE 장에서는 일련의 것들을 설명하기 위해 많은 단어를 사용했고, 매우 상세한 결과를 얻었습니다. HTML5 참조 매뉴얼의 관련 장에서 DOCTYPE은 Normal DOCTYPE - 일반 doctype 일반적인 DOCTYPE은 우리가 본 것 중 가장 간단한 형태인 이며, 실제 구성은 다음과 같습니다. 텍스트 조각, 즉, , 대소문자를 구분하지 않습니다. 공간의 정의는 소개의 설명을 참조하세요. 문자 HTML 역시 대소문자를 구분하지 않습니다. 1칸 이상. 닫는 태그, 즉 >입니다. DOCTYPE은 더 이상 권장되지 않음 - 더 이상 사용되지 않는 doctype 은 HTML4 시대의 소위 여러 DOCTYPE이며 그 구성은 다음과 같습니다. 표준에서는 Public ID와 System ID가 엄격하게 일치합니다. 지정된 시스템 ID가 Public ID를 가질 수 없는 경우 위의 8번째 선택 콘텐츠는 존재할 수 없습니다. HTML5는 HTML4의 전환 및 프레임워크 DOCTYPE을 완전히 버리고 XHTML의 DOCTYPE 선언을 통합하여 다음 6가지 조합을 생성합니다. 1칸 이상. 따옴표 또는 작은따옴표 쌍(앞뒤가 일치해야 함)은 이전 Public ID에 해당하는 시스템 ID를 따옴표 안에 넣습니다. 텍스트(예: )는 대소문자를 구분하지 않습니다. 1칸 이상. 문자 HTML 역시 대소문자를 구분하지 않습니다. 1칸 이상. 문자 PUBLIC, 대소문자를 구분하지 않습니다. 1개 이상의 공백으로 계속하세요. 따옴표 또는 작은따옴표 쌍(앞뒤가 일치해야 함)은 큰따옴표 안에 Public ID를 입력합니다. 선택 콘텐츠: 1칸 이상. 닫는 태그, 즉 >입니다. 레거시 도구 DOCTYPE - 레거시 도구 호환 문서 유형 이름에서 알 수 있듯이 DOCTYPE은 역사적 유산과의 호환성을 위해 완벽하게 준비되어 있습니다. 오래전에는 어떤 "도구"가 이런 DOCTYPE을 생성하는지 확인할 방법조차 없습니다. 레거시 도구 유형 DOCTYPE의 구성은 다음과 같습니다. 예를 들어 다음과 같은 DOCTYPE이 있습니다. 다음 범주에 속합니다: , 기본적으로 케이스 외에는 변경할 가치가 없습니다. 텍스트(예: )는 대소문자를 구분하지 않습니다. 1칸 이상. 문자 HTML 도 대소문자를 구분하지 않습니다. 1칸 이상. 문자 SYSTEM, 대소문자를 구분하지 않습니다. 1개 이상의 공백으로 계속하세요. 따옴표 쌍 또는 작은따옴표(앞과 뒤에 일치해야 함), 따옴표 안에 about:legacy-compat 텍스트를 넣으세요. 이 텍스트는 대소문자를 구분합니다. . 1칸 이상. 닫는 태그, 즉 >입니다. 현실적인 디테일 DOCTYPE의 역할을 살펴보면, 리얼 브라우징에서는 브라우저의 표준 모드를 실행시키는 역할만 합니다. 표준에 따르면 HTML 문서에서는 DOCTYPE 앞에 U+FFEF BOM, 몇 개의 주석 , 약간의 공백 등 다른 요소가 있을 수 있지만 현재 상태에서는 그렇지 않습니다. 별로 이상적이지 않음: IE6-9의 경우 DOCTYPE 앞에 주석이 있으면 Quirks 모드로 들어갑니다. IE6의 경우 DOCTYPE 앞에 XML 선언이 있으면 Quirks 모드로 들어갑니다.