공공기관 사이트들을 포함한 한국 웹 사이트들의 심각한 웹 표준 규약 파괴현상을 몸소 체험하면서, (X)HTML 페이지의 첫 줄에 선언되는 DOCTYPE의 중요성을 다시 한 번 여기에도 기록해 두고자 한다.
World Wide Web Consortium (W3C)이 DOCTYPE의 중요성에 대해 강조하고 있는 것을 인용하면,
doctype을 추가해 주는 것을 잊지 마십시오.
뭘 추가해?
HTML에는 한 가지 형식만 있는 것이 아니고, 실제로는 여러 형식이 있는데, 여기에는 HTML 4.01 Strict, HTML 4.01 Transitional, XHTML 1.0 Strict 등 그 수는 여럿이랍니다. 이 모든 HTML 형식들은 각각의 W3C 규약에 정의되어 있으며, 기기가 읽을 수 있는 언어로서 HTML 형식의 적법한 구조와 구성 요소들 그리고 이러한 요소들의 해당 속성들로 정의되어 있습니다.
이러한 정의는 “Document Type Definition” 혹은 짧게 DTD라고도 불립니다.
HTML 문서들을 읽어들이는 웹 브라우저와 같은 도구들은 (X)HTML이 실제로 어떠한 DTD를 사용하고 있는지를 알아야 하고, 이것이 왜 (X)HTML 문서들의 맨 처음에 다음과 같은 DTD 선언문을 포함해야 하는지를 잘 설명해 줍니다:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
위에서 사용된 문법에서 보이다시피, DTD 선언문은 그냥 짧게 “Doctype”이라고도 불립니다.
그럼, 왜?
왜 DOCTYPE을 써야 하냐고요? 왜냐하면, 이것이 당신의 웹 문서가 어떤 버전의 (X)HTML로 쓰였는지를 정의해주고 웹 브라우저와 같은 도구들이 이 문서를 올바르게 읽어 드릴 수 있게 하기 위해서는 꼭 필요한 아주 중요한 정보이기 때문입니다.
예를 들어, 문서에 doctype을 지정해 두면, (X)HTML의 문법을 검사할 때 사용될 수 있는 Markup Validator와 같은 도구를 사용할 수가 있고, 그래서 기타 브라우저들에서도 올바르게 당신의 문서가 보일지를 확인해서 잘 못 된 오류들을 수정할 수가 있게 됩니다.
하지만, 무엇보다도 가장 중요한 것은 대부분의 웹 브라우저들이 doctype 선언문이 있음으로써, 불필요한 추측을 하게 만들지 않는다는 것입니다. 이것은, “표준” 분석 방식을 사용하게 하면서 문서가 화면에 표시되는 속도가 더 빨라질 뿐만 아니라, doctype이 없어서 생길 수도 있는 예기치 못한 문제들로부터 자유로워질 수 있습니다.
일반적으로, 웹 브라우저가 DOCTYPE이 선언되어 있지 않은 html 문서를 읽어들일 때는, 대충 짐작해서 읽어들이는 방식(“Quirks” mode)을 선택한다. (어쩌면 요새 개발/배포되는 웹 브라우저들이 너무 관대(?)해서 이런 상황이 고쳐지지 않고 있는지도…) 이렇게 되면, 브라우저는 옛날 90년대 말에 사용되었던 방식으로 웹 페이지를 해석하게 되며, 그야말로 대충 짐작해서 읽어들이게 되면서, 원래의 의도한 구조와는 다르게 페이지를 보여주게 되고 또한 브라우저마다 제각기 다른 결과물들을 표시해 줄 수밖에 없게 된다.
결국, 지금의 21세기에 와서도 그들의 HTML 문서에 DOCTYPE이 선언되어 있지 않았다면, 웹 표준을 깡그리 무시하겠다는 선언과도 같으며, 그 내용은 제쳐놓고서라도, 전달 방법은 20세기 과거의 것으로 남을 수 밖에 없다.
빨리 고쳐주세요! 😐
– 권장하는 추가 참고 글들
- Fixing your site with the right Doctype, an article on A List apart by Jeffrey Zeldman
- A list of valid doctypes for (X)HTML documents