Lot's of good points others have made. Just one note, lots of people will
say by using templates, you can have designers work on the HTML and
you as a dev can concentrate on code. While I think that's great, I think the
even greater power is the ability to easily re-skin a site. Combine multiple
templates with some well structured CSS reliant html and it becomes very
trivial to re-skin a site.
in reply to HTML In CGI Scripts.
Right now, I have such a site up and running. Basically
the back-end is XML, then a combination of a very simplistic mod_perl handler
sitting on top of a CGI::Application app that uses HTML::Embperl
to provide different skins based upon configurations. The mod_perl handler
inspects the url, reads a config file based on url parameters and then jams
the appropriate params into the HTTP stream (embperl templates, XSLT stylesheets, CSS stylesheets, other data ...). Sounds complicated but the neat thing is the CGI::Application is free of lots of conditional code.
The only real conditionals are built-in default templates and stylesheets.