HTML 태그 닫기, 왜 안 해도 될까?

by DD
4개월 전
조회수 17

HTML5에서 `<p>`, `<li>`, `<img>`, `<br>` 태그 닫기가 필수가 아닌 이유에 대한 논의가 시작됨

SGML 태그 추론 규칙(SGML Tag Inference Rules)에 따라 태그를 닫지 않아도 브라우저가 해석함

초기 웹 브라우저의 오류 처리 방식(Error Handling) 차이로 인해 HTML 표준이 발전해 옴

XHTML의 엄격한 문법(Strict Syntax)이 실패하고 HTML5가 유연한 문법을 채택한 배경을 설명함

HTML5의 유연한 문법과 SGML

논의에서는 HTML5가 SGML(Standard Generalized Markup Language)의 태그 추론 규칙을 따르기 때문에 특정 태그를 닫지 않아도 된다고 설명한다. 특히, SGML의 태그 생략 규칙(Tag Omission)은 브라우저가 HTML 코드를 해석하는 방식에 큰 영향을 미쳤다. 이러한 유연성은 개발자가 코드를 더 간결하게 작성할 수 있게 하지만, 코드의 가독성을 저해할 수 있다는 의견도 존재한다. 또한, WHATWG의 구체적인 파싱 알고리즘(Parsing Algorithm)은 이러한 규칙을 명시적으로 정의한다.

브라우저 렌더링 방식의 역사적 배경

댓글에서는 초기 웹 브라우저의 오류 처리 방식 차이가 HTML 표준 발전에 영향을 미쳤다고 지적한다. 넷스케이프 내비게이터(Netscape Navigator)는 유효하지 않은 HTML을 거부했지만, 인터넷 익스플로러(Internet Explorer)는 오류를 허용하고 렌더링하는 방식을 선택했다. 이러한 차이는 HTML5 표준이 제정될 때, 오류 복구(Error Recovery)를 위한 규칙을 포함하도록 했다. 결과적으로, HTML5는 다양한 브라우저 환경에서 호환성을 확보하기 위해 유연한 문법을 채택했다.

XHTML의 실패와 HTML5의 선택

XHTML 1.0은 XML의 엄격한 구문 규칙을 HTML에 적용하려 했지만, 2009년에 폐기되었다. XHTML은 모든 태그를 닫고, 소문자 태그 이름을 사용하며, 모든 속성에 따옴표를 사용하는 것을 요구했다. 하지만, 이러한 엄격한 규칙은 개발자들에게 부담을 주었고, 브라우저 호환성 문제를 야기했다. HTML5는 이러한 문제점을 해결하기 위해, 유연한 파싱 규칙(Flexible Parsing Rules)을 채택하여 다양한 환경에서 웹 페이지를 렌더링할 수 있도록 했다.

코드 가독성과 개발 생산성

일부 개발자들은 태그를 닫지 않는 것이 코드 가독성을 저해할 수 있다고 지적한다. 특히, Vim과 같은 편집기에서 태그의 범위를 명확하게 파악하기 어려워, 코드 수정 및 관리가 어려워질 수 있다. 하지만, 코드 자동 완성 기능과 같은 개발 도구의 발달로 인해, 태그를 닫는 것의 필요성이 줄어들었다는 의견도 있다. 결국, 코드 스타일(Code Style)은 개인의 선호도와 프로젝트의 컨벤션에 따라 결정된다.

You are not required to close your <p>, <li>, <img>, or <br> tags in HTML