Custom XML templating with PHP
4th July 2003
Dynamic XML conversion using the SAX parser and a stack is the best new article I’ve seen on PHPBuilder in a very long time. It introduces several interesting ideas. The first is something I’ve been thinking about for a while now: using PHP’s output buffering to implement a kind of templating system so that all of the scripts in a system just have to generate an intermediate content type, then the output buffering function adds on the HTML framework and finalises the page. The second idea is ingenious: invent XML elements to represent specific behaviours, then handle them with a SAX before the page is displayed. Here’s some example code from the article:
<doc title="Pizza menu" bgcolor="lightblue"> <bigheadline> Pizza Palace - Our Menu for <dayofweek /> </bigheadline> <br /><br /> <b>Buon appetito!!!</b> <br /><br /> <nicebox bordercolor="green"> <product id="0" /><br /> <product id="1" /><br /> <product id="2" /><br /> <product id="3" /><br /> <product id="4" /><br /> </nicebox> </doc>
The tutorial describes a full implementation to make use of the custom tags demonstrated above. It’s advocating a full CMS where pages are described using a custom XML format, but the idea could be used in a whole load of different ways. I touched on this approach with my Form Validation prototype but this really shows how much further the concept can be taken. Best of all, the performance hit should be pretty minimal due to the absurd speed of PHP’s XML functions.
More recent articles
- Highlights from my appearance on the Data Renegades podcast with CL Kao and Dori Wilson - 26th November 2025
- Claude Opus 4.5, and why evaluating new LLMs is increasingly difficult - 24th November 2025
- sqlite-utils 4.0a1 has several (minor) backwards incompatible changes - 24th November 2025