SGML, XML, XHTML // DTD // MIME TYPE(Content-Type) // standards mode와 quirks mode

woolee의 기록보관소·2022년 12월 7일
0

FE개념정리

목록 보기
24/35

SGML, HTML, XML, XHTML

마크업 언어의 역사는 GMLSGMLHTMLXML

SGML(Standard Generalized Markup Language)은 문서 마크업 언어이다. SGML은 GML(Generalized Markup Language)에서 파생된 문서 마크업 언어이다. SGML에서는 문서 구조를 정의하기 위해 문법을 제공하는데, 복잡하고 너무 많은 탓에 어렵다는 단점이 있었다. SGML은 이후 HTML과 XML의 모태가 된다.

HTML(Hyper Text Markup Language)은 부분적이고 독립적으로 SGML과 병행해서 개발되었으며, 초기 HTML의 의도는 SGML의 응용 프로그램이었다.
SGML의 복잡함을 제거하고 웹 상에서 쉽게 사용할 수 있도록 개발되었다.

XML(Extensible Markup Language)은 주로 www(World Wide Web)에서 사용하기 위한 전체 SGML parser에 비해 parser 구현을 쉽게 하기 위해 설계된 SGML의 하위 집합(프로필)이다. 현재는 XML이 SGML보다 널리 쓰인다.

XML은 HTML을 개선하고, SGML의 복잡함을 해결하기 위해 SGML을 재조합해서 등장했다. XML은 데이터 구조를 정의(데이터 구조화)하기 위해 만들어졌다. 웹에서 디스플레이의 표준을 HTML으로 한 것처럼, XML은 데이터의 표준으로 만들려는 노력의 일환이었다.

HTML은 크게 SGML 기반의 HTML과 XML 기반의 HTML(전통적인 정의와 구별하기 위해 XHTML이라고 부른다)으로 나뉠 수 있다. XHTML은 엄격하고, HTML은 느슨하다.

XML과 XHTML

XML은 W3C에 의해 개발되었다.

XML은 driver hardware, operating systems, applications 간에 교환되는 데이터와 텍스트를 간편하게 전송할 수 있는 표준 방법을 제공한다.
XML의 주요 목적은 직렬화이다. 임의의 데이터를 주고 받는 프로세스가 다양한 환경에서 적용될 수 있게 프로세스를 표준화하는 게 목표이다.

XHTML은 XML와 HTML의 조합이다. XHTML은 HTML과 동등한 표현 능력을 지닌 XML 마크업 언어(HTML보다 엄격한)이다.

XML이 드라이버 하드웨어, 운영체제 및 다른 응용프로그램 간 데이터를 간편하게 전송하도록 설계된 마크업 언어(즉, 웹 간에 데이터를 주고 받는 게 아니라 여러 장치까지도 데이터를 주고 받을 수 있게)라면, XHTML은 XML의 장점을 HTML과 결합해 웹 페이지 생성을 위해 훨씬 더 명확하고 엄격한 마크업 언어를 제공한다.

HTML과 XHTML은 별개의 분리된 표준이다.

W3C는 XHTML 1.0이 HTML 4.01과 동일하도록 의도했다. 문서에 대한 시작 선언이 다른 것을 제외하고 XHTML 1.0과 HTML 4.01은 구문에서 차이를 보인다.
이후 HTML 4.01의 후속 버전으로 HTML 5가 개발되었다.

엄격한 버전의 HTML가 필요하게 된 이유는, 웹 콘텐츠(데이터와 텍스트)가 전통적인 컴퓨터에서 벗어나 여러 가지 이동기기 등에서 이용되기 시작하면서, 부정확한 HTML을 지원하기 위해서였다. 문서를 구분해야 하므로 문서형 정의(DTD)를 사용해 XHTML 문서를 규정해야 사용할 수 있다.

  • DTD(Document Type Definition) : 문서 타입을 제대로 정의하지 않으면 브라우저가 문서를 다르게 처리할 수 있으므로 DOCTYPE을 명시해야 하는 건 매우 중요하다.

XML, XHTML 더 공부하기

XML 목적
HTML과 XHTML
JSON과 XML

DTD && 표준(STANDARDS) 모드와 비표준(QUIRKS) 모드

모든 웹 문서는 문서형 정의(DTD)를 선언하는 것부터 시작된다. XHTM 또는 HTML 혹은 이들의 다양한 버전 중 어떤 것으로 마크업을 진행할 것인지(웹 문서는 SGML부터 시작해서 여러 버전을 거쳐 발전해왔으므로) 결정해야 한다.

HTML5는 SGML에 기반을 두지 않으므로 DTD 참조가 필요 없다. 아래와 같이 간단히 선언할 수 있다.

<!DOCTYPE html>

DTD를 생략하면 웹 브라우저가 표준모드(standards mode)가 아니라 비표준모드(quirks mode)로 렌더링되며, 크로스 브라우징에 문제를 일으킨다. 혹은 브라우저 렌더링이 제대로 되지 않을 수 있다.

쿽스모드는 W3C 표준을 엄격하게 지키는 대신 이전 웹페이지와의 역 호환성을 유지하려 한다.

MIME type

웹에서는(클라이언트와 서버가) 문서나 자원을 http를 통해 주고 받는다(response/request).

서버에서 응답으로 하나 이상의 헤더와 빈행(CR+LR), 그리고 문서 내용(body)로 구성되며 HTML이나 XHTML에서는 우리가 작성한 마크업이 body에 들어간다.
HTTP 헤더에는 전송할 문서에 대한 메타 정보를 제공하는데, 그중 가장 중요한 게 Content-Type이다. Content-Type은 사용자 에이전트(브라우저)에게 전송할 문서가 어떤 내용을 담고 있는 문서인지(문서 정보)를 제공한다.

html 문서

HTTP/1.1 200 OK
Content-Type: text/html

<!DOCTYPE html>
<html lang=en>
  <head>
    <meta charset=utf-8>
    <title>HTML</title>
  </head>
  <body>
    <p>I am a HTML document</p>
  </body>
</html>

xhtml 문서

HTTP/1.1 200 OK Content-Type: application/xhtml+xml <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <title>XHTML</title> </head> <body> <p>I am a XHTML document</p> </body> </html>

Content-Type은 MIME 타입이라고도 하는데, 브라우저는 이 MIME 타입에 따라서 문서 처리 방식을 결정한다.

HTML5 이전에는 HTML 4.01과 XHTML 1.0 두 개의 표준으로 분리되어 정의되어 있었고, XHTML을 사용하려면 application/xhtml+xml 같은 특별한 DOCTYPE을 선언해야 했다.

  • text/html 이면 브라우저는 html로 인식해서 처리한다. (XHTML도 text/html로 전송할 수 있다. 현재 웹페이지 송신용으로 가장 신뢰 받는 콘텐츠 타입은 text/html이다.)
  • application/xhtml+xml 이면 브라우저는 xhtml로 처리한다. 하지만 문제는, 일부 브라우저에서 지원하지 않는다는 점이 단점이다.

물론 최근에는 HTML5가 등장하면서 더 이상 XHTML 1.0을 고집하는 경우는 적다고 한다.

참고

Standard Generalized Markup Language
HTML
[용어 정리] XHTML, XML, SGML이란?
Difference Between XML and XHTML
XHTML
XML

mdn XHTML
DOCTYPE(문서형 정의) 선언
XHTML을 사용하는 이유
Serving HTML & XHTML

profile
https://medium.com/@wooleejaan

0개의 댓글