Ok, so for ages, whenever I've built a large data-driven website, with a MySQL-PHP backend, I've always just rendered the HTML in the PHP file with the query data plugged into various parts of the page.
However, more recently I've been incorporating Ajax into various parts of my newer projects, and the most common way to return data to an Ajax request from PHP was to make the appropriate SQL queries and then generate XML around the data. Ajax (or more specifically, Javascript) could then could take the XML and apply client-side XSLT (I use Google AJAXSLT) to transform the XML data into XHTML. This is easily the most popular method not only because it is easy and simple, but because it makes the gui designers life much easier as he can just create basic quick and clean XSL templates.
Again, that works great for Ajax where browser-side XSLT can be applied, but Ajax is only used in small portions of the website, but I have truly fallen in love with XSLT.
So I'm seriously considering moving away from the old, clunky PHP templating systems similar to those employed by various PHP frameworks (Zend, Cake, etc) that are still quite annoying and obtrusive to gui designers and moving directly to server-side XSLT (Sablotron). So instead of generating HTML and plugging data in directly, I would generate XML, and then apply an XSL template. This of course adds an additional (however simple) step. My only concern is the performance factor so I'd like to get some input from people who have long-term experience with Sablotron).