XHTML/CSS 조합이 Data와 Design의 분리? 절레절레.

CSS와 XHTML을 이야기하면서 흔히 하는 오해 중 하나가 이 웹표준이 Data와 Design을 분리해주는 역할을 한다고 생각하는 것입니다. 이런 오해는 다음과 같은 간단한 설명이 마치 이를 그런 인상을 주기 때문입니다. "CSS에서 스타일(style)을 정의하고 (X)HTML에 내용(content)을 넣고 이 내용은 CSS를 참조하여 보여진다."

이 설명이 틀리다는 것이 아니라 이 설명은 너무 단순화한 것이기 때문에 넘겨짚지 말아야한다는 것입니다. 이 설명에는 CSS에서 참조하는 내용이 보이는 모든 것을 정의한다는 가정을 한 것이 아닙니다. (X)HTML을 작성하면서 타이핑하는 것들이 일부 CSS로 분리되어 넘어가서 더 파워풀해진 것으로 인해서 적어지고 그만큼 깔끔해진 것을 두고 (X)HTML에서 보이는 것에 관련한 모든 것(design)이 CSS로 넘어갔다는 것이라는 생각을 하는 것이 바로 오해입니다. CSS의 취지는 스타일을 정의하는 것이지 Data를 분리하고자 한 것이 아닙니다.

조금 더 어렵게(?) 이야기하자면 CSS는 (X)HTML의 구조(structure)와 스타일(style)을 분리하고자 한 것입니다. 물론 구조는 Data가 아니죠. 본디 CSS라는 것이 출판(publishing) 분야의 마인드에서 파생한 것이기 때문에 모든 것을 문서로 가정을 하죠. 출판이라는 것은 (X)HTML을 문서라고 생각하는 경향이 큰 쪽입니다. 웹을 쳐다보는 입장은 출판분야에 국한되는 것이 아니기 때문에 CSS의 현재 모습과 설명 또한 표준이 되는 과정에서 여기에 국한되지는 않습니다만 그 뿌리를 보자면 그러한 설명을 할 수 있습니다. (여담이지만, 웹의 HTML을 어느 시각에서 보느냐에 따라 문서(document), 자원(resource), 데이타/정보(data), 언어(Language)등 다양한 방식으로 해석할 수 있고, 이런 다양한 관점의 다양한 분야의 사람들이 모여서 웹이 되었다는 생각을 하면 그 수많은 논쟁들이 발생하는지 추측할 수 있습니다.)

이런 분리는 사실 웹의 창시자라고 불리는 TBL(Tim Berners-Lee)의 본디 생각입니다. 하지만, TBL의 분리라는 개념은 따로 분리해서 정의한다는 것이 아니라 보여주는 녀석(브라우저)이 알아서 한다는 식의 개념이었기 때문에 HTML에는 본래는 들어있지 말았어야할 스타일에 관련된 여러가지 요소들이 짬뽕되었습니다. 그래도 이정도는 필요하겠지, 하는 심정으로 말이죠. <font>라든지 <center>라든지 하는 새로운 태그들이 그 예입니다. 새로운 태그나 속성(attribute)이 없다면 브라우저에서 보이는 방식을 그대로 받아들여야 하겠지만, 사용자의 입장에서 이에 불만이 나오지 않을 리가 없었을테고 근본적으로 HTML에는 새로운 엉터리(?) 태그들이 생겨날 수 밖에 없는 태생을 가지고 있던 것입니다. 물론, 출판이라는 입장에서 이는 턱없이 부족한 것이었을 것입니다. 아직 해결해야할 것들이 태산이기는 하지만, CSS는 이런 스타일에 관한 부분을 분리하여 엉터리 태그들의 사용을 막는 하나의 노력입니다. 스타일 정의는 CSS에 구조 태그는 (X)HTML에 두는 분리 말이죠.

몇개 안되는 스타일에 관한 태그와 문서를 정의하는 태그들만으로 페이지를 만들 수 있었기 때문에 HTML은 쉬운 것이었고, 웹이 급성장할 수 있는 여러가지 요소 중에서 한가지 요소였습니다. 아직도 그때와 동일한 방법으로 HTML을 작성할 수 있기 때문에, 성숙한 사용자들은 이런 초심자들의 수준을 끌어올리고자 하는 것이 웹표준운동입니다. 한개의 파일로 모든것을 해결할 수 있는 HTML을 처음 접하고 사용하는 분들이 CSS를 쉽게 작성할 리는 만무하겠죠.

아무튼 이야기가 조금 벗어났지만 결론적으로 아주아주 정확히 이야기하자면, "XHTML/CSS의 조합은 구조와 스타일의 분리를 향해가는 하나의 노력"이라고 할 수 있겠습니다. 디자인을 분리한다는 오해는 없었으면 좋겠습니다. 구조는 전적으로 디자인의 영역은 아니지만, 디자인에 영향을 주는 요소라는 것은 당연한 사실이니까요.