문서 유형 선언

Document type declaration

문서 유형 선언 또는 DOCTYPE은 특정 XML 또는 SGML 문서(예: 웹 페이지)를 문서 유형 정의(DTD)와 연결(예: HTML 2.0 - 4.0의 특정 버전에 대한 공식 정의)하는 명령이다.[1]문서의 일련화 형태에서 특정 구문에 부합하는 짧은 마크업 문자열로 나타난다.null

최신 웹 브라우저HTML레이아웃 엔진은 DOCTYPE "스니핑" 또는 "스위치"를 수행하며, 여기서 DOCTYPE은 다음과 같은 역할을 한다.text/htmlQuirks 모드 또는 "quirks 모드"와 같은 레이아웃 모드를 결정한다.text/htmlSGML 기반이 아닌 HTML5의 직렬화는 모드 선택에만 DOCTYPE을 사용한다.웹브라우저는 범용 DTD 기반 파서가 아닌 특수 목적 HTML 파서로 구현되기 때문에 DTD를 사용하지 않고 URL을 제공해도 절대 접속하지 않는다.DOCTYPE은 HTML5에서 "대부분 쓸모없지만 필요한" 헤더로 유지되며, 공통 브라우저에서 "표준 모드"를 트리거하기 위해서만 사용된다.[2]

DTD

구문

문서 유형 선언의 일반적인 구문은 다음과 같다.

<!DOCTYPE 뿌리가 뿌리가 있는 공용 "FPI" ["URI"] [  <!-- 내부 서브셋 선언 --> ]> 

또는

<!DOCTYPE 뿌리가 뿌리가 있는 시스템 "URI" [  <!-- 내부 서브셋 선언 --> ]> 

XML에서 문서를 나타내는 루트 요소는 문서의 첫 번째 요소다.예를 들어 XHTML에서 루트 요소는 <html>이며, 첫 번째 요소는 (독타입 선언 후) 열리고 마지막으로 닫힌다.SYSTEM과 Public 키워드는 DTD(Document Type Definition)의 종류(사적 시스템에 있거나 공개되어 있는 것)를 제안한다.Public(공용) 키워드를 선택한 경우 이 키워드는 큰따옴표로 묶인 "공용 식별자(FPI)"라는 제한된 형식의 "공용 식별자"로 이어진다.그 후에는 반드시 이중 견적 마크로 동봉된 "시스템 식별자"도 제공된다.예를 들어 XHTML 1.1의 FPI는 "-//W3C//DTD XHTML 1.1//EN"이며, 필요에 따라 XHTML 1.1에 사용할 수 있는 시스템 식별자가 3개 있는데, 그 중 하나가 URI 참조 자료인 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"이다.대신 SYSTEM 키워드를 선택한 경우 시스템 식별자만 제공해야 한다.이는 XML 파서가 이중 인용 부호로 묶인 DTD의 URI 참조를 통해 시스템별 방식으로 DTD를 찾아야 함을 의미한다.문자 그대로의 대괄호([])로 둘러싸인 마지막 부분을 내부 하위 집합이라고 하며, 이 하위 집합은 도면요소를 추가/편집하거나 PLOCLY 키워드 동작을 추가/편집하는 데 사용할 수 있다.[3]내부 하위 집합은 항상 선택적이며(특히 전체 SGML 파서를 구현하지 않는 기본 HTML 파서들의 경우 SGML 프로파일 내에서 금지되기도 한다).null

한편, 문서형 선언은 HTML과 같은 SGML 기반 문서에서는 약간 다르다. 여기서 공용 식별자는 시스템 식별자와 연관될 수 있다.이 연결은 예를 들어 시스템 식별자에 대한 FPI를 해결하는 카탈로그 파일을 통해 수행될 수 있다.[4]null

월드 와이드 웹 페이지의 첫 번째 줄은 다음과 같이 읽을 수 있다.

<!DOCTYPE html Public (공용) "-//W3C//DTD XHTML 1.0 Transition//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd> <html 랑그="ar" 디르="ltr" xmlns="http://www.w3.org/1999/xhtml"> 

XHTML에 대한 이 문서 유형 선언에는 공개 및 시스템 식별자가 있는 DTD가 참조에 의해 포함됨http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd. 엔터티 확인자는 참조된 외부 엔터티를 찾기 위해 어느 하나의 식별자를 사용할 수 있다.이 예나 다음 예에서는 내부 부분집합이 나타나지 않았다.루트 요소가 다음과 같이 선언됨html따라서, 이 예에서는 문서형 선언이 종료된 후 처음 열리는 태그와 다음 태그도 역시 개방된다.HTML 태그는 문서 유형 선언의 일부가 아니지만 방향 설정 목적을 위해 예제에 포함되었다.null

일반 DTD

몇 가지 일반적인 DTD가 목록에 올랐다.W3C는 웹에서 흔히 사용되는 DTD 목록을 만들어냈는데, 여기에는 "bare" HTML5 DTD, 이전 XHTML/HTML DTD, MathMLSVG와 같은 공통 내장 XML 기반 형식의 DTD 등이 포함되어 있다.[5]W3C HTML5와 해당 WHTWG 버전은 브라우저가 특정 FPI의 XHTML DTD만 허용하고 외부 DTD 파일을 가져오는 것보다 내부 로직 사용을 선호하도록 권고한다.그것은 또한 HTML 엔티티 이름의 목록일 뿐인 XHTML에 대한 "내부 DTD"를 추가로 명시한다.[6]: §13.2 null

HTML 4.01 DTD

엄격한 DTD는 대신 Cascading Style Sheet를 사용해야 한다는 주장과 함께 현재적 표시를 허용하지 않는다.엄격한 DTD의 모습은 다음과 같다.

 <!DOCTYPE HTML Public "-//W3C//DTD HTML 4.01/EN" http://www.w3.org/TR/html4/strict.dtd>  <html> 

Transition DTD는 일부 오래된 공개 및 더 이상 사용되지 않는 속성을 허용한다.

 <!DOCTYPE HTML Public "-//W3C//DTD HTML 4.01 Transition//EN" http://www.w3.org/TR/html4/loose.dtd>  <html> 

프레임을 사용할 경우 다음과 같이 프레임셋 DTD를 대신 사용해야 한다.

 <!DOCTYPE HTML Public "-//W3C//DTD HTML 4.01 프레임셋//EN" http://www.w3.org/TR/html4/frameset.dtd>  <html> 

XHTML 1.0 DTD

XHTML의 DTD도 Strong, Transition, Frameset이다.null

XHTML 엄격한 DTD.사용되지 않는 태그는 지원되지 않으며, XML 사양에 따라 코드를 올바르게 작성해야 한다.null

 <?xml 버전="1.0" 인코딩="UTF-8"?>  <!DOCTYPE html> 공개 "-//W3C//DTD XHTML 1.0 엄격한//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>  <html xmlns="http://www.w3.org/1999/xhtml" xml:message="엔" 랑그="엔"> 

XHTML Transition DTD는 XHTML Strict DTD와 같지만 사용되지 않는 태그는 허용된다.null

 <?xml 버전="1.0" 인코딩="UTF-8"?>  <!DOCTYPE html> 공개 "-//W3C//DTD XHTML 1.0 전환//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>  <html xmlns="http://www.w3.org/1999/xhtml" xml:message="엔" 랑그="엔"> 

XHTML 프레임셋 DTD는 프레임셋을 지원하는 유일한 XHTML DTD이다.DTD는 아래에 있다.null

 <?xml 버전="1.0" 인코딩="UTF-8"?>  <!DOCTYPE html> 공개 "-//W3C//DTD XHTML 1.0 프레임셋//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd>  <html xmlns="http://www.w3.org/1999/xhtml" xml:message="엔" 랑그="엔"> 

XHTML 1.1 DTD

XHTML 1.1은 XHTML 모듈화에 대한 지원을 도입하면서 가장 최근에 확정된 XHTML 개정판이다.XHTML 1.1은 XHTML 1.0 Strong의 엄격함을 가지고 있다.null

<!DOCTYPE html Public (공용) "-//W3C//DTD XHTML 1.1//EN" http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd> 

XHTML 기본 DTD

XHTML Basic 1.0

<!DOCTYPE html Public (공용) "-//W3C//DTD XHTML Basic 1.0//EN" http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd> 

XHTML Basic 1.1

<!DOCTYPE html Public (공용) "-//W3C//DTD XHTML Basic 1.1//EN" http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd> 

HTML5 DTD-less DOCTYPE

HTML5 사용:DOCTYPEURL 또는 FPI 형식의 DTD에 대한 참조가 없기 때문에 매우 짧은 선언.여기에 포함된 모든 것은 문서의 루트 요소의 태그 이름이며,HTML.[7] 명세서 초안 자체의 말로 다음과 같다.

바꾸어 말하면, 환언하면<!DOCTYPE html>, 사례-감정적으로.

URI 또는 FPI 문자열(FPI 문자열은 검증자가 대소문자를 구분하여 처리함)이 없는 경우를 제외하고, 이 형식(대소문자를 구분하지 않는 문자열 매치)!DOCTYPE HTML)는 SGML 기반 HTML 4.01의 구문에서 찾을 수 있는 것과 같다.DOCTYPE. HTML4와 HTML5 둘 다, 소문자의 소문자와 소문자 대문자의 혼합이 모두 유효하다고 취급되더라도, 형식 구문은 대문자로 정의된다.null

XHTML5에서DOCTYPE문자열의 대/소문자를 구분하는 일치여야 함 "<!DOCTYPE html>". 이는 XHTML 구문에서는 HTML5 내부에서 참조되는 루트 요소를 포함하여 모든 HTML 요소 이름이 소문자여야 하기 때문이다.DOCTYPE.

DOCTYPEXHTML5에서는 선택 사항이며 생략할 수 있다.[8]그러나 마크업을 XML과 HTML로 모두 처리하려면 DOCTYPE을 사용해야 한다.[9]

참고 항목

참조

  1. ^ HTML2 HTML3 HTML4
  2. ^ "The HTML syntax ― HTML5". Retrieved 2011-06-05.
  3. ^ "DOCTYPE Declaration". msdn.microsoft.com.
  4. ^ "Archived copy". Archived from the original on 2011-08-14. Retrieved 2011-09-09.{{cite web}}: CS1 maint: 타이틀로 보관된 사본(링크)
  5. ^ "W3C QA - Recommended list of Doctype declarations you can use in your Web document". www.w3.org. Retrieved 22 March 2019.
  6. ^ "HTML Standard". html.spec.whatwg.org. Retrieved 22 March 2019.
  7. ^ "The HTML syntax ― HTML5". Web Hypertext Application Technology Working Group. Retrieved 2011-06-05. 3. A string that is an ASCII case-insensitive match for the string "DOCTYPE". 5. A string that is an ASCII case-insensitive match for the string "HTML".
  8. ^ "The XHTML syntax ― HTML5". Web Hypertext Application Technology Working Group. Archived from the original on 2012-06-07. Retrieved 2009-09-01.
  9. ^ "Polyglot Markup: HTML-Compatible XHTML Documents". World Wide Web Consortium. Retrieved 2012-01-17.

외부 링크