What are the aims of this project?
The overriding aim was to create an XML application for the
presentation-oriented markup of resumes or curricula vitae.
By ‘presentation-oriented’ I mean that the intention was to
make this system suitable for producing actual output from
the XML—output that would actually be used in the way
resumes are normally used. In other words, the intent was
never to make a document type suitable for, say, interchange
between corporate human resources departments. The original
motivation was drawn from the fact that over a period of
years, the nebulous concept that was my own resume had
inadvertently spread itself over numerous different
Microsoft Word files. There were
several problems with this.
Why do we need yet another XML application for marking up resumes?
The basic answer here is that I didn't like what was freely available. A resume or curriculum vitae is a relatively personal document, and I like mine structured in a particular way (in terms of both the information content and the eventual presentation). At the same time, my intention was always to make that structure fairly general so that it might appeal to other people as well. Before starting the project, I surveyed the available XML offerings. Certainly Sean Kelly's work with XML Resume Library is impressive (and some of my own schema is inspired by it) but it just wasn't quite what I wanted. For example, I prefer my achievements and employment record to largely stand on its own, at the expense of more abstract ideas like a section for a person's overall objectives. Your mileage may vary.
There is a group called the HR-XML Consortium who develop an XML application for resume data. The following is how they describe themselves on their website:
The ResXML Project has a completely different focus: generating something for a job-seeker to hand over to a prospective employer. I have not had an extensive look at the HR-XML DTD, but our aims would seem sufficiently divergent to assume that there is room for two different models.
What output formats are supported?
Currently there are XSLT stylesheets
to produce HTML output and
transformation into PostScript
If you need plain text, get a plain text HTML browser such
as Lynx to
dump the HTML version to file. If you need
What operating systems are supported?
One of the nice features about XML, and most applications based on it, is that it is largely operating system neutral. The software requirements for using this system are considered below, but basically any operating system for which there are a set of appropriate XML tools will be just fine.
What XML processing tools will I need?
Although you can get by without one, an editor that knows about XML syntax is a great help. Good editors can ensure that you are using only the permitted tags at the right time, can prompt you for attribute values and automatically close tags.
To produce output from your resume marked up in XML, you need first an XSLT processor. This tool will transform your XML source into either HTML or an intermediate format called XSLFO on the way to print output. A non-exhaustive list of XSLT processors (and their authors in parentheses) follows:
The tools written in Java (Saxon and Xalan) are available for any platform which has a JVM, including Microsoft Windows.
To generate PostScript and PDF from XSLFO requires an XSLFO renderer. Some open source implementations exist, though none are complete:
The ResXML XSLFO stylesheet output is tested with FOP, and the resulting PDF is perfectly acceptable. There are two commercial products available, and, although expensive, they are much closer to full implementations of XSLFO:
Personally, I recommend XEP. It is written in Java, and will run on any operating system that has a JVM (including FreeBSD, NetBSD, OpenBSD, Linux, Solaris and Microsoft Windows).
So how do I actually make a resume?
There are two basic steps involved: marking up your resume as an XML document conforming to the ResXML schema, and then processing this document into one of the output formats.
The easiest way to mark up your resume is to use an
XML editor of some kind. This could be either a dedicated
XML editor (for example, xmlspy from Altova), or
an ordinary text editor that is XML-aware in some way (such
emacs from the Free Software Foundation and the
editing mode). You will need to point the editor at the
ResXML DTD (for PSGML) or the Relax NG schema (for
nXML). How you do this will vary between editors. Using
GNU emacs and PSGML, for example, it is sufficient to
provide the location of the DTD in the
<!DOCTYPE resume SYSTEM "resume.dtd">
At this point, if you are using GNU emacs and PSGML, press Ctrl-C-Ctrl-P to re-parse the doctype and read in the DTD.
The procedure for getting started will vary between
editors, though it should be well explained in your editor's
documentation. Similarly, the procedure for creating and
adding content to elements in the document will vary. Your
editor should be able to discern that the top-level element
Once you have marked up your resume as an XML document, you are ready to use the XSL stylesheets to transform it into HTML or PDF. Performing this step is dependent on which XSLT processor and FO renderer you are using. As an example, we will look at how to use xsltproc and XEP to transform the XML source into PDF. Firstly, transform the XML into XSL-FO using xsltproc:
This will produce an XSL-FO file called
You should now have your resume formatted as a PDF
I know what I'm doing—where do I get the distribution from?
You can download a compressed tar archive of all the source code from ResXML's SourceForge.net File List page.
Who are the authors?
Is there a mailing list?
Can I help out?
 Here I am using the term ‘application’ to mean an XML schema and associated transformation stylesheets rather than a conventional application that just happens to use XML as a data format.