= 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에서 브라우저별로 픽셀을 맞추는 것 만큼이나 까다롭다. 또다른 문제는 가독성이다.