Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

HTML에서 짝 없는

종료 태그가 빈 단락을 만드는 이유

HTML 문서를 다루다 보면 열리는 태그 없이 </p> 종료 태그만 덩그러니 남아 있는 경우를 볼 수 있습니다. 그런데 브라우저는 이런 '길 잃은' 종료 태그를 만나면 아무 내용도 없는 빈 단락(empty paragraph)을 자동으로 생성합니다. 대체 왜 이런 일이 벌어지는 걸까요?

공식 HTML 문서의 규칙

공식 HTML 문서는 이 상황에 대한 처리 방법을 명확히 규정하고 있습니다. 닫는 태그인 </p>가 이미 열려 있는 <p> 요소와 짝을 지을 수 없을 때, 파서는 새로운 <p> 요소를 먼저 생성하도록 되어 있습니다.

즉, 종료 태그가 혼자 등장하더라도 문법적으로 유효한 문서 구조를 유지하기 위해 브라우저가 앞쪽에 빈 단락을 보완해 주는 것입니다. 그 결과 화면에는 텍스트가 전혀 없는 빈 줄, 즉 빈 단락이 나타나게 됩니다.

HTML4 DTD가 말하는 태그 규칙

HTML4의 DTD(Document Type Definition, 문서 타입 정의)를 살펴보면 p 요소에 대한 규칙이 나옵니다. 여기에 따르면 p 요소의 종료 태그인 </p>는 생략할 수 있지만, 시작 태그인 <p>는 반드시 작성해야 합니다.

SGML 선언의 OMITTAG 옵션

흥미로운 점은 HTML4의 SGML 선언입니다. 이 선언에는 OMITTAG 항목이 YES로 설정되어 있는데, 이는 태그를 생략(implied)할 수 있음을 의미합니다. 덕분에 특정 조건에서는 태그를 직접 작성하지 않아도 파서가 문맥에 따라 해당 요소가 존재한다고 간주하게 됩니다.

정리

결국 짝 없는 </p>가 빈 단락을 만드는 이유는, HTML 파서가 종료 태그를 만났을 때 그에 대응하는 열린 p 요소가 없으면 규격에 따라 새로운 <p> 요소를 자동으로 삽입하기 때문입니다. HTML4 DTD상 종료 태그는 생략이 가능하고, SGML 선언의 OMITTAG YES 설정 역시 태그 생략을 허용하기 때문에 이러한 동작이 자연스럽게 이루어집니다. 따라서 불필요한 빈 단락을 피하려면 <p></p>를 항상 한 쌍으로 맞춰 작성하는 것이 좋습니다.