xslt 강의 초안

xslt를 이용한 템플릿 통합

개발자는 고민이 많다. 하나의 데이터 소스를 가지고 많은 것을 해야 하기 때문이다. 오픈api지원과 ajax사용을 한번에 하기 위해서는 데이터 소스를 xml로 내보내는 것이 가장 좋은데, ajax 사용시 웹 접근성이 문제가 되므로 js를 지원하지 않는 브라우저를 위해 ajax를 사용하지 않는 정적 html도 사용해야 한다. ajax 기반 동적 페이지와 정적 페이지를 따로 만들어야 할까? xslt를 사용하면 된다. 이것은 정말 만병 통치약이다.

(todo: 간과하고 있는 게 있다. ajax는 단순한 메시지 전달에도 사용되는데, 여기서 xslt는 무슨 역할을 할 수 있는가?)

xslt를 사용하면, 페이지 뷰를 xml과 xslt로, 모델과 프리젠테이션을 확실하게 분리시킬 수 있다. 데이터 소스를 xml의 원소스를 사용하므로 오픈api처럼 다양하게 활용할 수 있으며, 하나의 xslt를 가지고 ajaxslt를 통해 자바스크립트로 렌더링할 수 있고, php나 자바의 라이브러리를 이용해 서버단에서 렌더링하여 정적 html처럼 보이게 할 수도 있다. 고무적인 사실은, 파이어폭스와 같은 브라우저를 사용하면 오프라인에서 어떤 컴파일러 없이도 렌더링 가능하며, xslt는 엄연히 플랫폼 독립적인 표준이므로 후에 기반 플랫폼이나 언어를 전환한다고 해도 그대로 사용할 수 있다는 것이다.

데이터베이스 ms-sql, mysql, oracle...
웹 서버 java, asp, php...
데이터 xml
프리젠테이션 xslt
클라이언트 브라우저(js) 브라우저(non-js) 외부 애플리케이션


xslt는 다양하게 파싱될 수 있다. php 등의 서버측 스크립트가 파싱해서 내보낼 수도 있고,
ajaxslt를 통해 자바스크립트로 파싱하거나 firefox/ie(activeX)등 브라우저가 자체적으로
가지고 있는 파싱 기능을 사용할 수도 있다. 문제는 이들 브라우저에서 지원하는
양식이 조금씩 다를 수 있다는 것이다. 최고사양의 xslt 문법을 맘껏 활용한 문서는
firefox에서 그대로 볼수 있지만 ajaxslt에서 파싱이 되지 않을 수도 있다. 이런 사소한
구현상의 문제는 드물지만 일단 발견되면 css에서 브라우저별로 픽셀을 맞추는 것 만큼이나
까다롭다.

또다른 문제는 가독성이다. <?/<% 등의 스크립틀릿과 어지럽게 섞여 있는 html 코드를
흔히 스파게티 코드라 하여 경멸하지만, xslt를 써서 그것을 대체하면 대다수 에디터에서
오히려 가독성이 떨어질 수 있다. 일반적으로 스크립틀릿은 html 태그와 다르게 하이라이팅이
되는 반면에 xsl 코드는 구분이 되지 않는데다 xsl:attribute등을 이용한 활용법은
기존 코드에 익숙해져있던 사람들에게는 한눈에 파악하기가 무척 어려울 것이다.
전자의 경우 에디터 설정을 바꾸면 되지만 후자의 경우는 간단치 않다.

그러나 xslt를 이용해서 얻는 최대 잇점은 첫째로 코드와 출력이 완전히 분리된다는 것이고,
(물론 xml을 생성하는 과정도 그 자체로 출력이라고 볼 수 있지만) 둘째로 이렇게 작성한
템플릿의 경우 언어/플랫폼에 완전히 독립적이 된다는 것이다. 셋째로 하이브리드 xslt
(ss + js)를 이용한 ajax는 그 가능성이 무궁무진하다. json을 활용하는 것보다야 무겁기는
하겠지만 xslt 구현의 소소한 차이 문제만 아니라면 이는 앵커 태그를 살짝 고치는 것
만으로 ajax를 구현할 수 있게 된다는 것을 의미한다. 대단한 편리함이 아닐 수 없다.

구현 부족 : firefox의 disable-output-escaping

powered by Moniwiki | themed by clockoon
last modified 2008-12-30 10:44:13
Processing time 0.0114 sec