>  기사  >  웹 프론트엔드  >  DOCTYPE 유형_HTML/Xhtml_웹페이지 제작에 대한 자세한 소개

DOCTYPE 유형_HTML/Xhtml_웹페이지 제작에 대한 자세한 소개

WBOY
WBOY원래의
2016-05-16 16:45:511168검색

HTML에서 DOCTYPE을 선언할 때 일반적으로 다음과 같은 유형이 있습니다.




예, HTML과 XHTML은 물론 Transitional과 Strict도 있습니다. 이름에서 알 수 있듯이 XHTML은 문서가 XML 형식으로 작성되었음을 의미하고 HTML은 문서가 HTML 형식으로 작성되었음을 의미합니다. Transition은 문서가 Transitional.dtd 또는 Loose.dtd의 요구 사항을 충족한다는 것을 의미하고 Strict는 문서가 strict.dtd의 요구 사항을 충족한다는 것을 의미합니다. 그러나 실제로 우리는 다음과 같은 오해를 하는 경우가 많습니다.
(1) 내 문서가 XHTML로 선언된 경우 내 문서는 전체 XML 형식이어야 합니다.
(2) 내 문서가 Strict로 선언되면 내 문서는 Strict 모드로 렌더링되어야 합니다. 그렇지 않으면 Quirks 모드로 렌더링됩니다.
이 두 가지 이해는 매우 간단하지만 잘못된 경우가 많습니다.
우선 문서 선언이 XHTML과 HTML인데, 이는 문서의 Parse(즉, 브라우저의 문서 분석)와 직접적인 관련이 없습니다. 실제로 브라우저가 문서를 구문 분석하는 방법은 서버가 문서를 제공하는 형식에 따라 다릅니다. 일반적으로 "text/html"과 "application/xhtml xml"의 두 가지 방법이 있습니다. "application/html xml" 형식으로 제공된 문서만 XML 형식으로 구문 분석할 수 있습니다. 그러나 브라우저 기록으로 인해 모든 브라우저가 "application/xhtml xml" 형식의 문서를 지원하는 것은 아닙니다. IE7 이전 버전(IE7 포함)에서는 이 형식의 문서를 발견하면 사용자에게 다른 파일로 저장하라는 메시지가 표시됩니다. IE의 광범위한 사용을 고려하여 현재 대부분의 문서는 "text/html" 형식으로 제공됩니다. "text/html" 형식으로 제공되는 문서는 HTML의 의미에 따라 구문 분석됩니다. HTML이 매우 내결함성이 있다는 것은 누구나 알고 있습니다. 문서의 TAG가 올바르게 닫히지 않더라도 HTML은 여전히 ​​올바르게 구문 분석될 수 있습니다. 표시됩니다. 따라서 XHTML이 "text/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에서는 많은 요소를 사용할 수 없습니다. 그러나 브라우저 호환성으로 인해 DOCTYPE에서 Strict.dtd를 선언하더라도 브라우저가 strict.dtd에서 허용되지 않는 요소를 발견하면 여전히 문서를 올바르게 표시할 수 있습니다. 내 생각에는 브라우저가 DTD를 고려하지 않는 것 같습니다. 예를 들어 strict.dtd에는 TAG iframe이 존재하지 않지만, DOCTYPE에서 strict.dtd를 선언하고 TAG iframe을 사용하더라도 브라우저(IE7, IE8, FF3.0, Safari 3.0 포함)에서는 TAG iframe을 사용할 수 있습니다. 문서를 올바르게 표시하려면 브라우저는 선언한 DTD에 따라 문서를 구문 분석하지 않습니다. 현재 문서가 strict.dtd 또는 Transitional.dtd를 준수하는지 여부는 W3C Validator와 같은 일부 온라인 유효성 검사기를 통해서만 분석할 수 있습니다. 물론 실제로 선언한 DTD에 따라 문서를 엄격하게 작성할 수 있다면 가장 좋을 것입니다. 이렇게 하면 향후 브라우저가 DTD를 엄격하게 준수할 때 문서에 오류가 발생하지 않게 됩니다.
그러므로
(1) 문서가 "text/html"로 제공되는 경우 HTML로 선언해야 합니다. IE7을 올바르게 표시하려는 경우 특히 그렇습니다.
(2) 문서가 XHTML로 선언된 경우 "application/html xml" 형식으로 제공해야 합니다.
(3) 문서가 Quirks 모드에서 렌더링되지 않도록 문서 앞에 DOCTYPE 및 DTD를 선언해 보세요.
(4) DTD를 선언하는 경우 DTD 요구 사항을 엄격하게 준수하여 문서를 작성해야 합니다. 특히 Strict.dtd를 선언하는 경우 어떤 요소를 사용할 수 없는지 주의해야 합니다.
참고: 시간이 지남에 따라 HTML 및 XHTML, Strict.dtd 및 Transitional.dtd에 대한 브라우저 지원이 향상될 것입니다. 귀하의 브라우저가 IE7, IE8, FF 3.0 및 Safari 3.0보다 훨씬 높은 경우 이 문서의 적용 가능성에 주의를 기울여야 합니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.