I recently updated my resume. For the past year or so, I've had my resume in an abstract XML source format I came up with. (I'll put up the code when I have time.) I then use XSLT (Extensible Stylesheet Language Transformations) to convert from my XML source into XHTML, which you see on the resume page.
XSLT is a declarative language. You specify what elements you want transformed and what the output is, and it goes through the document and applies your transformations where they match. It's kind of enjoyable to code because there's no tedious "loop through the DOM" sorts of affairs like you might write if you were making a Python XML processor. (Although the XML syntax is its own kind of tedium, so it's a tradeoff.)
I then wrote another XSL stylesheet to transform my generated resume into the Web "clean" version linked above, which removes my email and mailing address. (I only want job offers from real, intelligent people, and my Turing test is devising a way to contact me.) It also replaces the CSS to accommodate the Web format a little bit better. (The 'print' version is almost the same, but the font sizes are a little different.)
My resume is built using a Makefile on the Techhouse server, which
does almost all the steps:
xsltproc (the XSLT stylesheet
transformer tool) from the source to the full version,
xsltproc from the full to the clean version, and
xmllint --format to pretty-print the XML. But The one thing
I haven't gotten a good automated procedure for is converting my resume
into PDF. I used to like the result of printing it to PDF using Firefox
on OS X. But I won't always have OS X available, and I don't know any
way to automate that. So it's not the best situation. I tried a few
'html2pdf' type tools, but they produce poor quality results.