HTML 문법 검사의 중요성을 보여준 작은 예
dev | 2011-05-23
얼마전에 메일로 받은 질문 중에 HTML5를 사용했을 때 구글 크롬에서 한글이 잘 나오지 않는다는 것이 있었다. 다른 브라우저에서는 다 잘 나온다는 것을 봤을 때 잘못된 문자가 들어갔거나 문서 선언이 잘 못됐을 거라고 추측은 했지만 건네받은 파일을 봤을 때는 무슨 문제인지 한 눈에 알기가 힘들었다. 실제로 파일을 만들어서 테스트를 해 보니 진짜 크롬에서만 인코딩이 유니코드로 잡히지 않고 한국어(?)로 인식이 되는 것을 볼 수 있었다.
경험상 브라우저간의 다른 동작은 문법 검사를 해보면 제일 확실히 원인 분석을 할 수 있었기 때문에 마크업 밸리데이션 서비스(Markup Validation Service)에 코드를 넣고 검사해봤다. 오류는 아래 구문에서 발생하고 있었고 캐릭터셋 선언이 되어 있지 않다는 경고가 나오고 있었다.
<meta http-equit="Content-Type" content="text/html; charset=utf-8">
그리고 문제의 원인으로 의심되는 부분이 나왔다.
Attribute http-equit not allowed on element meta at this point.
http-equiv
를 http-equit
로 잘 못 입력한 것이 문제의 원인이었다. 사소한 오타였지만 눈으로 봐서는 어느 부분이 잘 못 되었는지 찾기가 힘들었기 때문에 문법 검사 없이 이 문제를 분석하는데에는 많은 노력(삽질)이 들어갔을 것이다.
문법 검사를 통과 못해도 대부분의 브라우저들은 오류 복원 기능을 통해서 정상적인 결과를 보여주기 때문에 문법 검사까지 굳이 할 필요는 없다는 사람들을 많이 보게 된다. 실제로 웹표준을 적용했다고 하는 사이트들도 문법 검사까지 완벽하게 통과하는 경우는 많지 않다.
하지만 거꾸로 생각해서 자기가 해결하고자 하는 문제를 문법 검사를 통해서 찾고자 할 때 다른 오류가 이미 많다면 이를 통해 문제를 찾아내는 것이 쉽지는 않을 것이다. 가장 효과적인 수단을 사용하기가 힘들어 지는 것이다. 문법검사는 문법에 오류가 하나도 없다는 결과가 중요한 것이 아니라 올바른 문법을 사용하고자 하는 과정에서 더 중요하다.
마크업 언어의 역할이 더 확장되고 XHTML과 같은 언어를 사용해서 얻고자하는 이점이 있을 때 문법은 더욱 중요해진다. 당장 눈에 보이는 이점이 크지 않다고 해서 무시할 것이 아니다. 올바른 문법을 사용하는 것은 습관이다. 웹표준이 우리에게 정답을 바로 주는 경우는 많지 않다. 잘 활용하기 위해서는 기본부터 충실하게 지켜나가야만 한다.
Comments
고생할 수 있는 문제를 밸리데이션으로 쉽게 해결한 좋은 예시네요. 좋은 내용 감사합니다. :)
밸리데이션으로 이런 응용이 가능하군요! :)
정말 오타 났는지 한눈에 보이지 않네요. 저 같은 경우는 문법 검사에 100%통과 하는걸 선호 하긴 하는데 일부 사람들은 크로스 브라우징을 더 우선순위 하고 문법 검사에서 나오는 경고는 모든 브라우저에서 잘 뜨기만 하면 넘어가는 경우도 있더군요. 어떻게 보면 100%통과 시키려고 고생 하는것 보다 합리적이라고도 생각 되던데... 우리나라의 기관, 기업 홈페이지 대부분이 아직 크로스 브라우징도 잘 안되서 문제네요.
HTML5 문서(html5 doctype를 썼다면)라면 그냥 '<meta charset="UTF-8">'라고 썼다면, 애초에 오타의 가능성이 훨씬 적었겠지요. 그나저나, 'http-equit'라는 오타를 크롬과 사파리가 다르게 처리하는 것은 신기하군요. 그 부분은 명백히 WebCore에서 공통으로 쓰는 부분인데...