To produce PDF, I just print to PDF with Safari, using the resume print-media stylesheet.
The text version is produced by dumping the HTML page to text with w3m -dump, followed by a bit of manual editing.
A long time ago, my resume was stored as XML and transformed to HTML using XSLT. However, this was tedious, inexpressive and inflexible. S-expressions provide a more natural representation of XML, and Scheme provides a more flexible and powerful approach to transformation, because—as with all true Lisps—code is data. Paredit simplifies the editing process.