HTML

개발

1980년, 유럽 입자 물리 연구소(CERN)의 계약자였었던 물리학자 팀 버너스리가 HTML의 원형인 인콰이어를 제안하였다. 인콰이어는 CERN의 연구원들이 문서를 이용하고 공유하기 위한 체계였다. 1989년에 팀 버너스리는 인터넷 기반 하이퍼텍스트 체계를 제안하는 메모를 작성했다. 버너스 리는 1990년 말에 HTML을 명시하고, 브라우저와 서버 소프트웨어를 작성했다. 그 해에 버너스리와 CERN 데이터 시스템 엔지니어 로버트 카일리아우와 함께 CERN측에 자금 지원을 요청하였지만, 이 프로젝트는 CERN으로부터 정식으로 채택 받지 못했다. 버너스리의 개인적인 기록 에 1990년부터 "하이퍼텍스트가 사용되는 여러 분야의 일부"를 열거했고 백과사전을 그 목록의 첫 번째로 두었다.

최초 규격

HTML 최초의 일반 공개 설명은 1991년 말에 버너스리가 처음으로 인터넷에서 문서를 "HTML 태그"(HTML tag)로 부르면서 시작되었다.
그것은 머릿글자로 이루어진 20개의 요소를 기술하였고, 상대적으로 HTML의 단순한 디자인이었다. 하이퍼링크를 제외한 HTML 태그들은 CERN 자체의 SGML 기반 문서화 포맷인 SGML GUID에 강하게 영향을 받았다. 이 요소 중 13개는 HTML 4 버전에서도 여전히 존재한다.
HTML은 동적인 웹 페이지의 웹 브라우저를 통한 문자와 이미지 양식이다. 문자 요소의 대부분은 1988년 ISO 기술 보고서 9537 SGML을 이용한 기법에서 찾을 수 있다. 하지만 SGML 개념의 일반적인 마크업은 단지 개별 효과 보다는 요소 기반이고 또한 구조와 처리의 분리(?)(HTML은 CSS와 함께 이 방향으로 점진적으로 이동해 왔다.)
버너스리는 SGML 응용 프로그램이 되는 HTML을 고안해야 했고 그것은 공식적으로 IETF(국제 인터넷 표준화 기구)에 의하여 1993년 중반, HTML 규격에 대한 최초의 제안을 간행물로 정의했다. (버너스리와 덴 콘놀리에 의한 문법을 규정하는 SGML 문서 형식 정의(SGML DTD)가 포함된 "하이퍼텍스트 마크업 언어(HTML)" 인터넷 초안)
이 초안은 6개월 후 만료된다. 하지만 NCSA 모자이크 브라우저의 인라인 이미지를 내장하는 사용자 정의 태그의 사례는 주목할 만 했고, 성공적인 프로토타입에 대한 표준을 기반한 IETF의 철학을.
 마찬가지로 데이브 라그렛의 경쟁 인터넷 초안인 "HTML+ (하이퍼텍스트 마크업 포맷)"은 1993년 말에 테이블과 기입양식 같은 요소들을 이미 구현하여 표준화 제안을 했다.
이후 1994년 초 HTML과 HTML+ 초안은 만료되었고, IETF는 HTML 작업 그룹을 설립해 1995년에 HTML 2.0을 완성한다. 최초의 HTML의 규격은 미래에 수행될 HTML 표준을 기반으로 간주되는 경향이 있었다.RFC 1996년에 HTML 2.0은 HTML과 HTML+ 초안의 아이디어가 포함됐다고 발표했다.
HTML 2.0 지정은 이전의 초안들로부터 새로운 버전을 구별하기 위해서였다.
게다가 IETF의 후원하에 개발은 상충하는 이해 관계 때문에 지연되었다. 1996년부터 HTML 규격은 상용 소프트웨어 제작사의 투입으로 월드 와이드 웹 컨소시엄(W3C)에서 유지해 왔다. 하지만 2000년부터 HTML 또한 국제 표준(ISO/IEC 15445:2000)이 되었다. 현재 W3C에 의해 발표된 최신 규격은 1999년 말에 발표된 HTML 4.01 권고안이며 2001년에 문제와 오류들이 수정되어 발표된 안이 최종 승인되었다.

마크업

HTML 마크업은 HTML 요소(엘리먼트, Elements)와 그들의 속성(Attributes)과 문자 기반 데이터 형태와 문자 참조와 엔티티 참조를 포함하는 몇 가지 핵심 구성 요소로 이루어져 있다. 또 다른 중요한 구성 요소로는 문서 형식 정의(DTD, Document Type Definition)를 명시하는 문서 형식 선언(document type declaration)이다. 차기 HTML 5에서는 DTD를 지정하지 않아도 되고 오직 레이아웃 모드로 지정된다 .
Hello world 프로그램은 프로그래밍 언어와 스크립트 언어 그리고 마크업 언어를 비교하기 위해 사용되는 일반적인 컴퓨터 프로그램이다. 그리고 HTML에서의 Hello world 프로그램은 단 9줄에 불과하다:
<!doctype html><html>
  <head>
    <title>Hello HTML</title>
  </head>
  <body>
    <p>Hello World!</p>
  </body></html>
(<html>과 </html>사이의 문자는 웹 페이지를 표현한다. <body>와 </body>사이의 문자는 표시되는 페이지의 내용이며, <head>와 </head>사이의 문자는 눈에는 보이지 않지만 웹 페이지를 표현하기위해 필요한 해더 정보를 담고 있다.<title>과 </title>사이의 문자는 웹 브라우저의 페이지 제목을 정의하는데 사용된다.)
Hello world 프로그램을 최대로 짧게 만들고 싶다면:
Hello world
이라고 해도 되지만, 웹 표준에 위배된다.이 문서 형식 정의는 HTML 5이다. 만약 <!doctype html>로 선언하지 않은 경우 대다수의 브라우저는 "쿽스 모드"로 렌더링한다.

HTML 요소

HTML 문서는 완전한 HTML 요소로 구성되어 있고, HTML 요소의 가장 보편적인 형태는 세 가지 구성 요소를 가진다:
"시작 태그"(Start Tag)와 "종료 태그"(End Tag) 와 같은 태그 한 쌍; 몇 가지 요소 속성은 그 태그들 내에서 특성을 부여한다. 마지막으로 문자와 그래픽 정보 콘텐츠를 화면에 표현한다.
HTML 요소는 태그의 사이와 포함되는 모든 것이다.
태그는 꺾쇠괄호(<>)로 둘러싸인 키워드이다.

HTML 요소의 일반적인 형태

<tag>보이는 내용</tag>
HTML 요소의 이름은 태그의 이름이다.
그리고 종료 태그의 이름은 슬래시 문자 ("/")로 시작된다.

HTML 요소의 가장 보편적인 형태

<tag attribute1="value1" attribute2="value2">보이는 내용</tag>
속성이 주어지지 않는다면 시작 태그의 기본값을 사용하게 된다.

태그의 기본적인 형태

HTML의 머리부분 (<head>...</head>), 보통 제목은 <head>의 안에 포함된다. 예제:
<head><title>제목</title></head>

단락 구획

<p>단락 1</p> <p>단락 2</p>
새 줄(<br>), <br> 와 <p> 간의 차이점은 'br'은 페이지의 의미론적 구조를 변경하지 않는 줄바꿈(breaks a line)인 반면 'p'는 단락으로 페이지를 구분한다.
<code><p>이것은 <br /> 줄바꿈을 <br /> 포함하는 <br /> 단락이다. </p></code>

주석 사용

<!--..설명!..-->
 주석은 코딩을 이해하는데 도움을 줄 수 있지만 웹 페이지에는 표시되지 않는다.

데이터 형식

HTML은 스크립트 데이터와 스타일시트 데이터, 그리고 ID, 이름, URI, 숫자 길이의 단위, 언어, 미디어 기술자, 색상, 문자 인코딩, 날짜와 시간 등을 포함하는 속성 값의 종류를 위한 몇 가지 데이터 형태를 정의 내린다. 이러한 모든 데이터 형식은 문자 데이터를 최적화하기 위하여 분리되었다.

문서 형식 선언

HTML 문서는 문서 형식 선언 (비공식적으로, "doctype")으로 시작해야 한다. 브라우저에서 doctype의 기능은 렌더링 모드를 지시하는 것이며, 부분적으로는 쿼크 모드를 피하기 위한 목적도 있다.
doctype의 원래의 목적은 문서 형식 정의 (DTD)에 기반한 SGML 도구를 통하여 HTML 문서의 파싱과 유효 여부 확인을 가능하게 하려는 것이었다. DOCTYPE에 대한 DTD는 DTD에 순응하는 문서를 가진 허용 또는 금지된 내용을 지정하고 기계가 읽을 수 있는 문법을 포함하도록 지시한다. 반면 브라우저는 HTML을 SGML의 애플리케이션으로 수행하지 않으며, 결과적으로 DTD를 읽지 않는다. HTML 5는 기술적인 제한으로 인해 DTD를 정의하지 않는다. 그래서 HTML5에서 doctype 선언 <!doctype html>는 DTD를 참조하지 않는다.
HTML 4 doctype의 예제는 다음과 같다.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
이런 선언은 엄격한 HTML 4.01을 만들기 위해 DTD를 참조한다. 이것은 선언적인 요소인 font 같은 요소는 포함하지 않으며, CSS나 span, div 요소는 유지한다. SGML 기반의 유효 확인자(validator)들은 문서를 적절히 해석하거나, 유효 여부 확인을 실행하기 위해 DTD를 읽는다.
최근의 브라우저에서 이 doctype은 쿼크 모드에 반대되는 표준 모드를 활성화한다.
게다가 HTML 4.01은 임시적이고 프레임 단위의 DTD를 제공한다.

전송

HTML 문서를 다른 컴퓨터 파일과 같은 방법으로 전송할 수 있다. 하지만 HTML 문서들은 대부분 웹 서버에 의한 HTTP나 또는 이메일을 통하여 전송된다.

HTTP

월드 와이드 웹은 주로 웹 서버에서 하이퍼텍스트 전송 프로토콜 (HTTP)을 이용하는 웹 브라우저로 전송되는 HTML 문서를 위해 고안되었다. 그러나 HTTP는 HTML 이외에도 이미지나 소리, 그리고 기타 내용물을 서비스하는 데 사용된다. 브라우저가 받는 각 문서를 어떻게 다른지 알려주게 하기 위해, 다른 정보가 문서와 함께 전송된다.
이 메타데이터는 보통 MIME 타입 (예, text/html or application/xhtml+xml)과 문자 인코딩을 포함한다. (HTML에서 문자 인코팅 참조)
최근의 브라우저에서 HTML 문서와 함께 전송되는 MIN 타입은 문서가 초기에 어떻게 해석해야 하는 지에 대한 영향을 끼칠 것이다. XHTML MIME 타입과 함께 전송된 문서는 잘 구성된 XML로 기대되며, 문법 오류는 브라우저가 그것을 해석하지 못하게 할 것이다. HTML MIME 타입과 함께 전송된 동일 문서가 HTML에 관대한 브라우저에서는 성공적으로 출력될 것이다.
W3C 권고안에서는 권고안 부록 C에 나오는 가이드라인을 따르는 XHTML 1.0 문서는 MIME 타입으로 표시될 것이다. 현재의 XHTML 1.1 작업 초안은 또한 XHTML 1.1 문서는 MIME 타입으로 표시될 것이라고 언급하고 있다.

HTML 전자 우편

대부분의 그래픽 이메일 클라이언트는 단순 텍스트로는 불가능한 어휘적 마크업과 형식을 제공하기 위해 종종 정의되지 않는 HTML 부분집합 사용을 허용한다. 이것은 색상 제목, 강조, 인용문, 인라인 이미지와 도표와 같은 인쇄정보를 포함한다. 그러한 많은 클라이언트들은 HTML 이메일 메시지를 작성하는 GUI 편집기와 그것을 해석하여 보여주기 위한 렌더링 엔진을 포함한다. 그러나 전자 메일에서 HTML를 포함시키는 것은 호환성 문제와 관련되어 있기 때문에 논쟁의 대상이 된다. 그 이유는 피싱 공격의 은닉을 도와줄 수 있고, 스팸 필터를 혼동시킬 수 있으며, 또한 단순 텍스트보다 크기가 더 커지기 때문이다.

명명 규칙

웹 문서의 가장 일반적인 파일 확장자는 .html이다. 일반적으로 줄여서 .htm라고도 하며, DOS나 FAT와 같은 초기 운영 체제와 파일 시스템이 파일 확장자를 3자로 제한했기 때문이다.

HTML 애플리케이션

HTML 애플리케이션 (HTA; 파일 확장자 ".hta")는 애플리케이션의 그래픽 인터페이스를 제공하기 위해 브라우저에서 HTML과 DHTML을 사용하는 윈도용 애플리케이션이다.
정상적인 HTML 파일은 웹 서버와 통신하면서, 웹페이지 객체와 HTTP 쿠키만 다루는 웹 브라우저의 보안 모델에 제한된다. HTA는 완벽히 신뢰된 애플리케이션으로 동작하기 때문에 파일의 생성/편집/제거와 윈도 레지스트리 엔트리에 보다 더 많은 특권을 가진다. 그 까닭은 그것은 브라우저의 보안 모델 외부에서 작동하기 때문이다. HTA는 HTTP를 경유하여 실행되지 않지만, 실행 파일과 같이 다운로드가 될 수 있으며, 로컬 파일 시스템에서 실행된다.