Note that this isn't as efficient as you'd hope.
We do the following where I work to prevent continuous calls to the XSLT to generate the HTML.
1) Construct XML files from database calls.
2) Store XML on docroot.
3) Call ASP page, check for cached HTML younger than one day in age (last modified time) and use it if present.
4) No cached HTML found, so call XSLT against XML to produce HTML.
5) Cache HTML in file but also return to user.
Sum result is that it is XML driven, it is XSL driven, it is db driven... but it only does the work once a day.
Of course this method is based on seldom changing information... but that's cool.
You could also create a totally server driven solution whereby something goes through XML on the backend, applying numerous XSLT's and splurging onto numerous docroots... static files on the front end, 100% control on the back, as many look and feels as you wish
cheers
david k