XSLT의 브라우저 호환성

얼마전에 스타크래프트2 사이트가 오페라등 몇몇 브라우저에서 안보이는 사태가 발생했습니다. 아는지 모르는지 아직 방치되어 있구요.

근데 XSL은 제가 알기로 opera 에서도 지원하는걸로 알고 있습니다.
제가 XSL을 공부할때 자주 들려보던 사이트에 브라우저 지원에 대한 얘기가 나왔었거든요.
opera 9부터는 xsl 을 지원한다고 되어있습니다. 8까지는 xml + css 를 지원한다고 되어있구요.
그런데 왜 저 페이지는 안 보였던걸까요?

한번 알아볼겸 스타크래프트2의 도입부 부분을 가져왔습니다.

<?xml version=”1.0″?>
<xsl:stylesheet version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>

xsl:stylesheet 태그는 XSLT 의 최상단 태그로서 HTML 로 치면 HTML 태그와 같다고 보셔도 됩니다.
이곳에서 각 xmlms 선언이 들어가게 됩니다.
이미

xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”

우리가 쓰려는것은 대부분 XHTML 형식이니 선언을 해줘야 겠지요:)

그럼 xsl:stylesheet은 만들어졌습니다. 그러나 그것이 끝이 아닙니다.
바로 <xsl:ouput< 가 필요하게 됩니다.
xsl:ouput은 결과물을 컨트롤해주는 태그입니다.

이곳에서 문서의 타입이나 DTD 등등을 선택해줄수 있습니다.

제가 XHTML1.0 transitional 로 사용하는 output 은 이런식입니다.

<xsl:output method=”html” doctype-public=”-//W3C//DTD XHTML 1.0 Transitional//EN” doctype-system=”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd” />

웬만한 센스가 있으신분들은 보기만해도 딱 감이 오실겁니다.
문서의 타입선언(method)(XHTML 로해봤는데 안되는느낌입니다;;;) DTD 선언과 DTD 파일의 위치를 선언해줍니다.

<?xml version=”1.0″ encoding=”utf-8″?>
<xsl:stylesheet version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform” xmlns=”http://www.w3.org/1999/xhtml”>
<xsl:output method=”html” indent=”yes” doctype-public=”-//W3C//DTD XHTML 1.0 Transitional//EN” doctype-system=”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd” />

이렇게 선언하면 보이지않을까…. 일단생각해보는데
모르죠 뭐 xslt 버전이 안맞아서 안보이는걸지도…
output 의 method의 기본값은 XML 인데 몇가지 예외로 HTML로 기본으로 지정되는때가 있습니다.
바로밑에HTML 태그로 페이지가 시작된다거나… 뭐그런경운데 저는그냥 그런거 상관없이 확실하게 정해주는게 좋으니까요:)

XSLT는 CSS, HTML 의 분리에서 Server Side Program 도 분리를 시켜줄 수 있기 때문에 많은 가능성을 담고 있다고 봅니다.
XSLT를 안지 오래되진 않았지만 보면서 저는 웹페이지를 더 빛나게 할 수 있는 좋은 기술이 아닐까 라고 생각합니다.
일단 재미있게 하고 있습니다.(일하는거는 별로지만;;;; )