HTML의 DocType를 일반적으로 다음과 같은 유형을 선언합니다.
<! 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 엄격한 // en http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.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>
예, 여기에는 HTML 및 XHTML이 있으며 전환적이고 엄격합니다. 이름에서 알 수 있듯이 XHTML 은이 문서가 XML 형식으로 작성되었음을 의미하며 HTML 은이 문서가 HTML 형식으로 작성되었음을 의미합니다. 전환은이 문서가 Transitional.dtd 또는 Looke.dtd의 요구 사항을 충족한다는 것을 의미하며,이 문서는이 문서가 strict.dtd의 요구 사항을 충족한다는 것을 의미합니다. 그러나 사실, 우리는 종종 다음과 같은 오해를 가지고 있습니다.
(1) 내 문서가 XHTML로 선언되면 내 문서는 정확히 XML 형식이어야합니다.
(2) 내 문서는 엄격하게 선언되므로 내 문서는 엄격한 모드로 렌더링되어야합니다. 그렇지 않으면 퀴크스 모드로 렌더링됩니다.
이 두 가지 이해는 매우 직접적이지만 잘못되었으며 우리는 종종 그러한 실수를합니다.
먼저, 문서는 XHTML 및 HTML로 선언되며 문서의 구문 분석과 직접적인 상관 관계가 없습니다 (즉, 문서 분석). 실제로 브라우저 구문 분석 문서는 서버가 문서를 제공하는 형식에 따라 다릅니다. 일반적으로, 텍스트/html과 application/xhtml xml의 두 가지 방법이 있습니다. Application/HTML XML 메소드에 제공된 문서 만 XML에서 구문 분석 할 수 있습니다. 그러나 브라우저의 역사적 이유로 인해 모든 브라우저가 Application/XHTML XML 형식 문서를 지원하는 것은 아닙니다. IE7 이전 버전 (IE7 포함) 은이 형식을 지원할 수 없습니다. IE7 이이 형식으로 문서를 만나면 사용자가 다른 파일로 저장하라는 메시지가 표시됩니다. IE의 광범위한 사용을 고려할 때 대부분의 문서는 현재 텍스트/html로 제공됩니다. Text/HTML에 제공된 문서는 HTML의 의미에 따라 구문 분석됩니다. 모두 HTML이 매우 결함이라는 것을 알고 있습니다. 문서의 태그가 올바르게 닫히지 않더라도 HTML을 올바르게 표시 할 수 있습니다. 따라서 XHTML이 텍스트/HTML (대부분의 경우)에 제공되는 경우 DocType에서 XHTML을 선언하더라도 문서는 XML 형식으로 구문 분석되지 않으므로 XML 사양에 따라 문서가 엄격하게 보장 할 수 없습니다. 실제로 많은 전문가들은 귀하의 문서가 Application/XHTML XML 형태로 제공되지 않으면 HTML로 선언해야한다고 제안합니다.
둘째, 브라우저가 귀하의 문서를 렌더링하는 방식은 귀하가 선언하는 DTD에 의해 결정되지 않습니다. 실제로 DocType 및 DTD를 선언하면 문서가 엄격한 모드로 렌더링됩니다 (또는 표준 모드에는 많은 브라우저에 거의 표준 모드도 포함되어 있으며 여기에는 차이가 없습니다). DocType가없는 문서의 경우 Quirks 모드가 렌더링하는 데 사용됩니다. 따라서 브라우저의 렌더 모드는 선언 한 DTD와 직접적인 관계가 없습니다.
마지막으로, strict.dtd 또는 transitional.dtd라고 선언하든 현재 브라우저에는 차이가없는 것 같습니다. strict.dtd는 Transitional.dtd 또는 Loose.dtd보다 훨씬 엄격하며 많은 요소는 strict.dtd에서 사용할 수 없습니다. 그러나 Browser 호환성으로 인해 Doctype에서 strict.dtd를 선언하더라도 Strict.dtd에서 허용되지 않는 요소를 만나면 브라우저가 여전히 문서를 올바르게 표시 할 수 있습니다. 브라우저가 DTD를 고려하지 않는 것 같습니다. 예를 들어, iframe의 태그는 strict.dtd에 존재하지 않지만 DocType가 strict.dtd를 선언 한 다음 iframe의 태그를 사용하더라도 브라우저 (IE7, IE8, FF3.0, Safari 3.0)를 사용합니다. 브라우저는 귀하가 선언 한 DTD에 따라 문서를 구문 분석하지 않습니다. 현재 문서가 strict.dtd 또는 Transitional.dtd를 준수하는지 확인할 수 있습니다. W3C Validator와 같은 일부 온라인 유효성 검사기를 통해서만 분석 할 수 있습니다. 브라우저는 좋은 지원을 제공 할 수 없습니다. 물론, DTD에 따라 문서를 엄격히 쓸 수 있다면, 브라우저가 향후 DTD가 엄격하게 준수 할 때 문서가 오류를 생성하지 않도록 가장 좋습니다.
그러므로,
(1) 문서가 텍스트/html로 제공되면 HTML로 선언해야합니다. IE7이 올바르게 표시되기를 원한다면 더 많은 작업을 수행해야합니다.
(2) 문서가 XHTML로 선언 된 경우 Application/HTML XML 형태로 제공해야합니다.
(3) 문서 앞에서 DocType 및 DTD를 선언하여 문서를 렌더링하기 위해 Quirks 모드를 사용하지 않도록하십시오.
(4) DTD를 선언하면 DTD의 요구 사항에 따라 문서를 엄격하게 작성해야합니다. 특히 strict.dtd를 선언한다면 어떤 요소를 사용할 수 없는지 조심해야합니다.
참고 : 시간이 지남에 따라 HTML 및 XHTML, Strict.dtd 및 Transitional.dtd에 대한 브라우저 지원이 더 좋습니다. 브라우저가 IE7, IE8, FF 3.0 및 Safari 3.0보다 훨씬 높으면이 기사의 적용 가능성에주의를 기울여야합니다.