대문자 또는 소문자 doctype?


182

HTML5 doctype을 작성할 때 올바른 방법은 무엇입니까?

<!DOCTYPE html>

또는

<!doctype html>

<! DOCTYPE html>
Shadow

내 자신의 질문에 대답하기 위해 관리했지만 다른 사람들이 비슷한 생각을 가지고 있다면 그것을 남길 것이라고 생각했습니다. 개인적으로 소문자를 선호합니다. HTML5의 다른 것은 대문자가 아닙니다.
joshnh

11
Google.com은 소문자를 사용합니다<!doctype html>
Leo Galleguillos

3
@HelloWorld : 소문자가 더 일반적이기 때문에 소문자가 더 잘 압축되기 때문입니다. 하루에 수백만 건의 조회수를 기록한 사이트의 경우 차이가 생길 수 있습니다.
Zaz

SVG 파일은 어떻습니까?
윌리엄 Entriken

답변:


183

HTML에서 DOCTYPE은 대소 문자를 구분하지 않습니다. 다음 DOCTYPE이 모두 유효합니다.

<!doctype html>
<!DOCTYPE html>
<!DOCTYPE HTML>
<!DoCtYpE hTmL>

XML 직렬화 (예 : XHTML)에서 DOCTYPE은 필요하지 않지만 사용하는 경우 DOCTYPE대문자 여야합니다.

<!DOCTYPE html>

HTML5의 XML 직렬화 (일명 'XHTML5')를 참조하십시오 .

DOCTYPEXHTML 문서에서 대문자가 아닌 경우 XML 파서는 구문 오류를 반환합니다.

두 번째 부분은 소문자 ( html), 대문자 ( HTML) 또는 대소 문자 ( ) 로 쓸 수 있습니다 hTmL. 여전히 작동합니다. 그러나 HTML 호환 XHTML 문서에 대한 폴리 글 로트 마크 업 지침 을 준수하려면 소문자로 작성해야합니다.


9
아니요, 잘못되었습니다. SGML에서 문서 유형 선언은 XML에 그것의 (a 아닌 고정 문자열 "DOCTYPE"로 선언 된 두 경우 모두 생산 (28)이며, 생산 110 태그 , 그것은이다 키워드 ). 따라서 각 SGML 및 XML 표준의 표준 정의에서는 항상 대문자입니다. 소문자 "doctype"을 허용하는 소프트웨어를 찾으면 해당 소프트웨어가 표준을 준수하지 않는 것입니다. 브라우저는 "자신이 받아들이는 것에 자유롭도록"설계되었지만 호환되는 XML 프로세서는이를 유효성 검사 오류로 표시해야합니다.
후루사토 이치로

5
... 그리고 X / HTML5도 이것에 대해 정확하지 않다는 것을 지적해야합니다. 지정된대로 XHTML5는 단순히 유효한 XML 마크 업이 아니며 그렇게 할 수도 없습니다. X / HTML5 사양에는 수많은 오류가 있습니다. 나는 그것을 진지하게 받아들이지 않습니다. 그들이 " polyglot markup "(완전히 새로운 개념) 을 만들어야한다는 사실은 그들이 말한 것을 분명히 말합니다.
이치로 후루사토

20
@Ichiro SGML이 아니라 HTML에 대해 이야기하고 있습니다. SGML을 구현 한 브라우저는 없습니다. 만약 그렇다면, <title/foo/와 같습니다 <title>foo</title>. 소수의 HTML 유효성 검사기 만 SGML을 사용합니다. HTML5 스펙은 이것을 명확히하는 첫 번째 것입니다. whatwg.org/specs/web-apps/current-work/multipage/…
Mathias Bynens

2
@ TestSubject528491이 단락은 DOCTYPE ( html) 의 두 번째 부분에 관한 것 입니다. 전체 문장은 다음과 같습니다.“두 번째 부분은 소문자 ( html), 대문자 ( HTML) 또는 대소 문자 ( ) 로 쓸 수 있습니다 hTmL. 여전히 작동합니다. 그러나 HTML 호환 XHTML 문서에 대한 폴리 글롯 마크 업 지침을 준수하려면 소문자로 작성해야합니다. "
Mathias Bynens

15
@IchiroFurusato HTML5읽고 싶을 수도있다 . 인용 :“그러나 이전 버전의 HTML과 달리 HTML [5] 직렬화는 더 이상 SGML의 응용 프로그램으로 간주되지 않고 자체 구문을 정의합니다. 이 구문은 SGML에서 영감을 얻은 반면, 특히 오류 처리와 관련하여 브라우저가 실제 환경에서 HTML을 실제로 처리하는 방식과 더 유사한 방식으로 정의되고 있습니다.”
Mathias Bynens

40

2014 년에도 여전히 궁금한 점이 있으면 다음을 참조하십시오.

HTML5

W3 HTML5 사양-독 타입

DOCTYPE은 다음 구성 요소로이 순서대로 구성되어야합니다.

1. A string that is an ASCII case-insensitive match for the string "<!DOCTYPE".
...

참고 : 모든 대문자로 표시 되더라도 사양에 둔감합니다.

-------------------------------------------------- --------------------

XHTML5

W3 HTML5-XHTML

This specification does not define any syntax-level requirements 
beyond those defined for XML proper.

XML documents may contain a DOCTYPE if desired, but this is not required 
to conform to this specification. This specification does not define 
a public or system identifier, nor provide a formal DTD.

XML 사양을 살펴보면 DOCTYPE이 대문자로 나열되어 있지만 '모든 대문자'가 필요하다는 내용을 찾을 수 없습니다 (비교를 위해 위에 나열된 HTML5 사양에서는 모든 대문자로 표시되지만 스펙은 대소 문자를 구분하지 않음을 명시 적으로 나타냅니다 ).

-------------------------------------------------- --------------------

폴리 글 로트 마크 업

W3 폴리 글 로트 마크 업-소개

잘 구성된 XML 문서 인 HTML5 문서를 제공 할 수있는 것이 때때로 가치가 있습니다.

W3 폴리 글 로트 마크 업-독 타입

폴리 글 로트 마크 업은 [HTML5]의 8.1.1 섹션에 지정된 문서 유형 선언 (DOCTYPE)을 사용합니다. 또한 DOCTYPE은 다음 규칙을 준수합니다.

* The string DOCTYPE is in uppercase letters.

따라서 Ployglot Markup은 일반 HTML5 문서 유형을 사용하지만 추가 / 변경이 가능합니다. 토론에서 가장 주목할만한 것은 DOCTYPE 이 모든 대문자로 선언 된 것 입니다.

-------------------------------------------------- --------------------

요약

W3의 HTML 대 XHTML 섹션보기

[오피니언] 특별히 고려해야 할 사항이 없다면 XML 규정 준수에 대해 걱정하지 않아도됩니다. 대부분의 클라이언트 및 JS 기반 서버 개발에서 JSON은 XML을 대체했습니다.

따라서 기존의 xhtml / xml 기반 레거시 시스템을 새로운 HTML5 기능과 공존하도록 업데이트하려는 경우에만 이것이 실제로 적용되는 것을 볼 수 있습니다. 이 경우 폴리 글 로트 마크 업 사양을 살펴보십시오.


18

최신 사양 에 따르면에 대소 문자를 구분하지 않는 것을 사용해야합니다 <!DOCTYPE html>. 따라서 브라우저는 원하는 경우를 지원해야하지만 <!DOCTYPE html>표준 사례 인 경우 를 추론하는 것이 합리적 입니다.


3
사양은 doctype에 대소 문자를 구분하지 않는 '<! DOCTYPE'에 해당하는 문자열을 포함해야하므로 '<! dOcTyPe'가 정확함을 암시합니다.
joshnh

6
내가 말했듯이, 사양에는 브라우저가 모든 경우를 지원해야하므로 모든 경우가 작동합니다. 그러나 질문자는 명확하고 표준적인 형식을 찾고 있기 때문에 다른 것을 선택해야 할 강력한 이유가 없다면 사양에서 예제 사례를 사용할 수도 있습니다.
John Mellor

9
이 사양은 일관되게이 내용을로 작성 <!DOCTYPE html>하므로 사양 작성자가 특정 대문자 사용을 약간 선호한다고 추론하는 것이 합리적입니다. 스펙과 동일한 대문자를 사용할 것입니다. 왜냐하면 이러한 것들이 일관성을 유지하는 것이 좋기 때문입니다. 그러나 원하는 경우 <!dOcTyPe내 손님이 되십시오.)
John Mellor

3
@joshnh 혼란을 이해하지 못합니다. 1) DOCTYPE 선언은 대소 문자를 구분하지 않아야합니다. 2) HTML5 스펙은 예제에서 대문자 "DOCTYPE html"을 사용합니다. 이 모든 대답은 하나의 대문자가 모든 것이 유효하더라도 문헌과 일치한다는 것입니다. 왜 그렇게 터무니없는가요?

2
@joshnh이 John의 말을 잘못 이해했다고 생각합니다. FWIW, 나는 특정 방식으로 형식을 지정해야 할 특별한 이유가 없다면 브라우저가 확인하는 사양이 선호하는 것에 대한 John의 감정에 동의합니다. 요한은 결코 유일한 것이 더 정확하다고 암시하려고하지 않았다 뭔가 에 환경 설정을 기반으로하는 - 그렇지 않으면 바로, 완전히 임의의 선택인가?
Ryan Williams

7

대문자 또는 소문자가 "정확합니다". 그러나 웹 글꼴을 사용하고 IE7에 관심이 있다면 IE7 <!DOCTYPE html>의 버그 때문에 사용 하는 경우 웹 글꼴이 실패하는 경우가 있습니다 <!doctype html>(예 : 이 답변 ).

이것이 제가 항상 doctype을 대문자로하는 이유입니다.


6

HTML5의 표준은 태그가 대소 문자를 구분하지 않는다는 것입니다.

http://www.w3schools.com/html5/tag_doctype.asp

더 기술적으로 : ( http://www.w3.org/TR/html5/syntax.html )

DOCTYPE은 다음 구성 요소로이 순서대로 구성되어야합니다.

  1. 문자열의 대소 문자를 구분하지 않는 ASCII 문자열 <!DOCTYPE입니다.

35
W3Schools 100 %가 W3C와 관련이 없으며 100 % 신뢰할 수는 없지만 대부분의 정보는 좋지만 일부 정보는 그렇지 않습니다.
joshnh

이것은 꽤 널리 알려져 있습니다-여기 w3.org 링크가 있습니다 : w3.org/TR/html5/syntax.html
Stephen

4
W3Schools는 다른 웹 사이트보다 오류가 적거나 적습니다. ( 완전히 임의의 예 ) 소금 한 덩어리로 정보를 취하고 의심이가는 경우 w3.org 페이지를 참조하면 괜찮을 것입니다. 실제 바보는 W3Schools가 공식 기관이거나 인증서가 의미가 있다고 믿는 사람들입니다.
Mr Lister

8
@MrLister : "W3Schools"라는 이름과 "W3C"라는 이름의 링크가 있다고 생각하기 때문에 사람들을 바보라고 부르는 것이 공정하지 않다고 생각합니다. 이 둘은 이름과 영역에서 혼동을 일으킬 정도로 충분히 유사하며 전자가 후자에 의해 보증되거나 관련이 있다고 가정합니다. 그것은 특허 적으로 W3Schools의 의도입니다. 이것이 그들이 문제를 이해하는 많은 사람들을 화나게하는 이유 중 하나입니다. 많은 정보가 정확하지 않다는 사실은 문제를 복잡 하게 만듭니다 (즉, 실제로 합리적인 서비스를 제공하면 약간 용서할 수 있습니다 )
Bobby Jack

에 대한 링크 tag_doctype.asp가 유효하지 않습니다 (404).이 질문은 doctype태그가 아닌 선언에 관한 것입니다 ... 어쨌든, 결론은 맞습니다 : HTML5에서는 키워드 doctype가 대문자, 소문자 또는 대소 문자가 될 수 있습니다.
Abel

3

이런 종류의 질문은 정답이 하나 뿐이고 둘 중 복수 선택을 제공하며 하나를 선택하도록 요청합니다. HTML5 모두 유효 <!DOCTYPE html>하고 <!doctype html>유효하다고 제안 합니다.

따라서 HTML5 가능 브라우저는 소문자를 허용하고 html을 올바르게 처리합니다.

HTML5에 익숙하지 않은 브라우저는 문서 유형이 없어도 가능한 한 HTML을 처리하려고 시도한다고 들었습니다. 그리고 그들이 소문자 doctype을 인식하지 못하면 똑같이 할 것입니다. 따라서 브라우저는 HTML5 선언을 완전히 구현할 수 없으므로 대문자로 만들 필요가 없습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.