Copyright © 2002 Bruce Christensen, Peter Hutnick, Mark Miller
![]()
|
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation; with no
invariant sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the section entitled
“GNU Free Documentation License”.
27 November 2002 Table of Contents
Table of Contents The XML Résumé Library is, at its heart, a DTD, a Document Type Definition. That means it is really someone's idea of how a résumé should, or at least could, be structured in XML. Beyond that, it comes with
Table of Contents This chapter explains how to install the XML Résumé Library, an Open Source, XML based résumé management system, on UNIX systems. It is written based on the author's experience installing on a Red Hat Linux system. Other systems may vary somewhat. The resources in this document provide enough information to convert your XML résumé to HTML, PDF, and plain text. The programs to exploit these resources, however, are not included. Any capable XML parser, XSLT stylesheet processor and XSL formatting objects processor will get the job done. Many of the XML Résumé Library developers use the free tools produced by the Apache XML Project, and we recommend that you do as well. These tools include Xerces, Xalan, and FOP. For the purposes of this document a functioning JRE (Java Runtime Environment) is a requirement. Obtaining and installing a JRE is outside the scope of this document. However, you might find Sun's J2SE web site a good starting point. A minimal understanding of XML is an asset for using the XML Résumé Library. Most users find that they can get by following the examples in the absence of XML experience. For a more in-depth tutorial on authoring a résumé in XML, see the section called “Writing your first XML Résumé”. For a reference on XML elements available in the XML Résumé Library DTD, see Element Reference. The XML Résumé Library is available for download at http://sourceforge.net/project/showfiles.php?group_id=29512 and is linked from the main Xerces is an XML parser, which is needed by the tools used in later steps of processing. It converts an XML document into a format that other computer programs can more easily use.
Xalan does the actual conversion of a résumé from XML to other formats. When combined with the XSL stylesheets provided by the XML Résumé Library, it produces directly usable HTML and plain text. It also produces an intermediate format called XSL-FO (XSL Formatting Objects) that can be converted to PDF by an FO processor.
FOP is a print formatter for XSL formatting objects. It converts XSL-FO documents to PDF. The XML Résumé Library comes in a tarball (or zip archive aimed at Windows users) that includes:
The most straightforward way to make use of these resources is to recursively copy the "examples" directory to where you want to work with your résumé. For instance: [resume-1_5_1]$ cp -a examples ~/resume
default. If this is unacceptable you will need to edit the line resume = resume to match the filename you use, such as resume = myresume if your résumé is TipYou can also indicate your résumé filename on the command line when you build your résumé, e.g.: [resume]$ make resume=myresume
NoteThe DTD and XSL files you've downloaded to your computer aren't used by default when building your résumé. Instead, the versions on the XML Résumé Library web site are used. This ensures that you're always using the most recent version; however, it also means that builds take longer (since file have to be downloaded each time you build your résumé) and that you can't build a résumé offline. If you'd like to use your local copy of the XSL stylesheets, edit the xsl_base variable in the example Makefile to point to your local XSL directory. For example: xsl_base = ~/resume-1_5_1/xsl
To use your local copy of the DTD, change the DOCTYPE declaration at the top of your resume to look like this: <!DOCTYPE resume PUBLIC "-//Sean Kelly//DTD Resume 1.5.1//EN" "~/resume-1_5_1/dtd/resume.dtd"> Each of these three packages need to be untarred and their jar files copied to your JRE's ext/ directory. This is typically /usr/java/jdk1.3.1_02/jre/lib/ext/, but may vary depending on who packaged your JRE. We will simply refer to it as the ext/ directory. Xerces consists of the jars xercesSamples.jar, and xercesImpl.jar, which are in the top directory of the Xerces zip archive. Xalan consists of the jars runtime.jar, xalanservlet.jar, xalansamples.jar, regexp.jar, JLex.jar, java_cup.jar, bsf.jar, BCEL.jar, xsltc.jar, xalan.jar, and xercesImpl.jar in the bin/ directory. All of these need to be copied to the ext/ directory. Table of Contents This chapter provides an overview of the features and usage of the XML Résumé Library, an Open Source, XML based résumé management system, on UNIX systems. To get a feel for the power of the XML Résumé Library you should run the example résumés through their paces and see how they turn out after processing. You can do this by renaming the file gmake while connected to the internet. This should generate the files resume.txt, resume.html, resume.fo, and resume.pdf — all versions of Alexis Kernighan's résumé. file that represents the entirety of your career/academic record, while allowing for the simple creation of targeted résumés. In other words, you can start to think of your XML Résumé as a database of your every skill, every accomplishment, every _____ without worrying about cluttering up the résumé your employer sees. Read on to find out how. Consider the following snippet of Jane Doe's resume: <skillset>
<skill>Carpentry</skill>
<skill>Welding</skill>
<skill>Java Programming</skill>
<skill>XML</skill>
<skill>C++</skill>
<skill>Good communicator</skill>
<skill>Gourmet Pastry Creation</skill>
<skill>Cooking for construction workers</skill>
</skillset>The problem here is that Jane needs to maintain a record of all her skills, but she doesn't need to tell a potential employer about all of those skills. Sure, Jane could selectively comment out portions of her résumé, but this can be tedious. Instead, she should use attributes to describe the categories of résumé to which a given element applies: <skillset>
<skill targets="construction,woodworking">Carpentry</skill>
<skill targets="construction">Welding</skill>
<skill targets="programming">Java Programming</skill>
<skill targets="programming">XML</skill>
<skill targets="programming">C++</skill>
<skill>Good communicator</skill>
<skill targets="foodservice">Gourmet Pastry Creation</skill>
<skill targets="foodservice+construction">Cooking for construction workers</skill>
</skillset>After defining her targets, Jane can filter her résumé to produce beautifully-formatted, well-focused résumés to send to employers. Her "construction" résumé will contain only those elements applicable to the construction industry, and the job foreman won't have to read about her vast knowledge of meringues and bundt cakes, or her experience coding up an application server in Java. You may have noticed that some of Jane's skills apply to more than one target, or apply only when two (or more) targets are defined. By specifying a list of targets (separated by commas), Jane can ensure that her Carpentry skill will be included in both "construction" and "woodworking" résumés. Similarly, her "Cooking for construction workers" skill will apply only to résumés where both "foodservice" AND "construction" are targeted. Elements that have no "targets" attribute are always included in the filtered output. Thus Jane's communications skills will apply to every résumé. The "targets" attribute can be used in ANY element, but keep in mind that using targets on a high-level element (e.g., history or academics element) will affect all children of that element. Thus if the history element includes a 'targets="foo"' attribute, and "foo" is not included in the targets list during the filtering process, then the entire history section will be filtered out, even if there are subelements of history that do not have the 'targets="foo"' attribute. Now, keep in mind that defining targets is entirely up to you. You can use the targets attribute in any element, and you can specify any number of values for the target— just keep in mind that comma (,) and plus (+) represent OR and AND, respectively, as per the example above. If the list of possible targets starts to pile up, just look at the end of a filtered included for convenience. To get a better idea of how this all works, take a look at the complete resume (with make all resume=example2), and then the filtered version (make filter resume=example2). Then compare example2.txt with example2-filtered.txt. To create résumés targeted to other purposes, change filter_targets in Makefile. With just a few tweaks, you can dramatically change the look of your résumés. The first thing to do to customize your resume is to check out the parameters files. The main file is xsl/params.xsl, which contains general parameters that you can change. We suggest making a backup of this file by issuing the command cp params.xsl params.xsl.dist, and then playing around with the values inside params.xsl to see how they affect the formatting and output of your resumes. NoteYou will need to change xsl_base in Makefile to point to your local xsl directory before any of your changes can take effect. Otherwise, the default parameters stored on the XMLRésumé website are used instead. Located in the xsl/paper directory are the a4.xsl and letter.xsl files. These files specify things like margin size and indent size for their respective paper formats. The xsl/country directory contains country-specific parameter files, which contain translations for everything from "Résumé" to "Mobile Telephone". If you would prefer your résumé to be called a Curriculum Vitae, this is where to look. The files are sorted by a 2-letter country code (e.g., nl.xsl for the Netherlands). If you don't see your country there, or if there are errors/omissions in the translations, please attempt a translation and submit the changes back to the project-- while XML may work across all languages, the gentle developers of the XML Résumé Library Project do not. Cascading Style Sheets (CSS) are a powerful way to format the look of your HTML Résumé. A selection of sample CSS files are provided in the css directory. If you have not already done so, try changing the value of css.href in params.xsl to a different stylesheet (you may have to adjust the location of the stylesheets). Once you find one you like, you can tweak it by editing the CSS file by hand, or create one that is entirely your own. If you think other people would find your CSS file useful, please consider submitting it back to the project. This is the fun part. Take a look at both example résumés and choose one suits you best. Then replace the existing information with your own. You may also be able to find example résumés of real people by search for XML resume on the internet. For complete information on the elements valid for the XML Résumé Library see Element Reference. More detailed information about creating and building résumés is available in other sections of this user guide. For more information about the XML Résumé Library, see the HTML documentation included in the doc/ directory. For questions about the package and the DTD, there is a mailing list and a support forum web site. The online support forum is located at http://sourceforge.net/tracker/?group_id=29512&atid=396336. subscribe [youraddress@yourdomain.tld] in the This chapter was originally written by Peter Hutnick. It was edited and converted to DocBook format by Bruce Christensen. Further editing and additions were done by Mark Miller Please send comments, suggestions, and especially corrections for this chapter to <peter at hutnick dot com>. Table of Contents
XML Résumé files are XML files composed mostly of elements. This part of the user guide documents the semantics (meaning) and syntax (structure) of all of the elements that you can use to construct a résumé. To get started with creating a résumé, take a look Chapter 2, which is a tutorial on creating an XML résumé. Alternatively, you could examine the content model for the resume element, and drill down from there. This sections documents changes to the XML Résumé Library DTD. WarningDeprecated elements will still be formatted, and are still valid elements in an XML résumé. However, their use is discouraged, and they will be removed in a future version of the DTD.
Table of Contents
Nameacademics — Container for information about academic experience DescriptionThe academics element contains information about a person's academic experience. Parentsacademics may be contained in these elements: resume See AlsoExamples<academics>
<degrees>
<degree>
<level>Ph.D</level>
<major>Toothpick Manufacturing</major>
<institution>Stanford University</institution>
</degree>
</degrees>
<note>
<para>
I also have an honorary doctorate in toothpick structural analysis from
MIT.
</para>
</note>
</academics><academics>
<degrees>
<degree>
<level>BA</level>
<major>Culinary Psychology</major>
</degree>
</degrees>
</academics>Nameachievement — An accomplishment made at a job DescriptionThe achievment element contains a single accomplishment made while working at a particular job (e.g. “increased sales by 20%”, or “improved employee efficiency”). Parentsachievement may be contained in these elements: achievements Examples<job>
<jobtitle>Eggroll Engineer</jobtitle>
<employer>Chineese Cuisine Systems, Inc.</employer>
<period>
<from>
<date>
<month>August</month>
<year>1993</year>
</date>
</from>
<to>
<present/>
</to>
</period>
<achievements>
<achievement>
Wrote an <emphasis>excellent</emphasis> article on shell crispiness for
the <citation>European Journal of Egg Food Engineering</citation>,
published at <url>http://www.ejeps.org/articles/crispiness.html</url>.
</achievement>
<achievement>
Decreased filling greasiness by a <emphasis>whopping</emphasis> 30%!
</achievement>
</achievements>
</job>Nameachievements — Container for one or more job achievements Descriptionachievements is a wrapper element that contains one or more achievement elements. Achievements are specific things that were accomplished at a job. Parentsachievements may be contained in these elements: job ExamplesFor examples, see achievement. Nameaddress — A postal address SynopsisContent Model(#PCDATA|street|street2|suburb|ward|city|state|province|county|prefecture|zip|postalCode|country|break)* Attributes
DescriptionThe address element defines a single postal address. It does not contain information about a person who resides at the address. Different countries have different address formatting conventions. Address formatting is controlled by the address.format parameter. If an address cannot be specified using address's child elements (street, city, etc.), it may be specified in untagged format. In this case, the address will be formatted verbatim, with line breaks preserved. Attributes
See AlsoExamplesExample 1. U.S.-style address <address> <street>123 Pickle St.</street> <street>Apt. #12</street> <city>Sourville</city> <state>NX</state> <zip>99999-9999</zip> </address> Formatted as: 123 Pickle St. Apt. #12 Example 2. Italian address <address> <street>Via Garibaldi, 23</street> <city>Sorrento</city> <postalCode>123 456</postalCode> <province>NA</province> <country>Italy</country> </address> Example 3. Untagged address <address>Reina #35, apt. 4a, e/ Gervasio y Escobar Ciudad de La Habana, CP 11900 CUBA</address> Formatted as: Reina #35, apt. 4a, e/ Gervasio y Escobar WarningYou may have noticed that the XML for this address isn't indented as usual. This is because untagged addresses are formatted verbatim, and so any indentation would be preserved in the formatted address. The address text begins on the same line as the start tag for the same reason (we don't want a leading linebreak in the formatted address). For additional address examples, look at the XML files in the examples/addressing directory of the XML Résumé Library distribution. Nameannotation — Additional information about a degree SynopsisContent Model(#PCDATA) Attributes
DescriptionThe annotation element provides additional information about an academic degree. It could be used to describe special honors (“Graduated summa cum laude”) or circumstances (“Completed degree in one year in accelerated program”). Parentsannotation may be contained in these elements: degree Examples<degree>
<level>BS</level>
<major>Street Cleaning Technology</major>
<annotation>
Graduated with highest honors.
</annotation>
</degree><degree>
<level>BFA</level>
<major>Chalkboard Scratching Composition</major>
<annotation>
Received dean's award in 1984.
</annotation>
</degree>NameartTitle — A title of an article or other work DescriptionThe artTitle element marks the title of a sub-work (such as an article or poem) in a book, journal, magazine, newspaper, anthology, or other compilation. ParentsartTitle may be contained in these elements: pub See AlsoExamples<pub> <artTitle>Lion Brainwashing During the Late 20th Century</artTitle> <bookTitle>Journal of the American Feline Psychiatric Association</bookTitle> </pub> <pub> <artTitle>Cucumber Pickling Process Management</artTitle> <bookTitle>Proceedings of the European Brine Process Engineers' Group</bookTitle> </pub> Nameauthor — An author of a publication SynopsisContent Model(#PCDATA) Attributes
DescriptionThe author element contains the name of an author of a work or publication. It may also reference a previously-defined name through its name attribute. In this case, the element will be processed and displayed as if it were actually the referenced name. Parentsauthor may be contained in these elements: pub Attributes
See Alsoname. Examples<pub> <bookTitle>Nuclear Engineering for Dummies</bookTitle> <author>Edgar Neutron</author> </pub> <name id="shirly.mendoza"> <firstname>Shirly</firstname> <surname>Mendoza</surname> </name> <pub> <artTitle>Cooking Wire-Core Pretzels</artTitle> <author name="shirly.mendoza"/> <bookTitle>Journal of Metal-Reinforced Confections</bookTitle> </pub> Nameaward — An award or other honor SynopsisContent Model(title,organization?,(date|period)?,description?) Attributes
DescriptionThe award element describes an award or other honor received by a person (e.g. “Nobel Prize”, “MacArthur Fellow”). Parentsaward may be contained in these elements: awards Examples<award> <title>Dean's List</title> <organization>ACME University</organization> </award> <award>
<title>Honor Roll</title>
<organization>Littleton Middle School</organization>
<date>
<year>1995</year>
</date>
<description>
<para>Maintained a 4.0 GPA.</para>
</description>
</award>Nameawards — Container for one or more awards DescriptionThe awards element contains one or more awards. Parentsawards may be contained in these elements: resume Examples<awards>
<title>Awards and Honors</title>
<award>
<title>Employee of the Month</title>
<organization>ACME, Inc.</organization>
<date><month>May</month><year>2002</year></date>
<description>
<para>
Received for <emphasis>exceptional</emphasis> customer service.
</para>
</description>
</award>
<award>
<title>AP Scholar</title>
<organization>College Board</organization>
<date><year>2002</year></date>
</award>
</awards>Namebirth — Container for information about a person's birth DescriptionThe birth element contains a single date that specifies when a person was born. Parentsbirth may be contained in these elements: header Examples<header>
<name>
<firstname>Scotty</firstname>
<surname>O'Reilly</surname>
</name>
<birth>
<date>
<dayOfMonth>17</dayOfMonth>
<month>March</month>
<year>1931</year>
</date>
</birth>
</header><header>
<name>
<firstname>Josè</firstname>
<middlenames>Luis Miguel</middlenames>
<surname>Domingo</surname>
</name>
<birth>
<date>
<dayOfMonth>23</dayOfMonth>
<month>Mayo</month>
<year>1834</year>
</date>
</birth>
</header>NamebookTitle — A title of a book or similar work DescriptionThe bookTitle element marks the title of a book, magazine, journal, anthology, or other similar work. To denote the title of a sub-work (like an article), see artTitle. ParentsbookTitle may be contained in these elements: pub See AlsoExamples<pub> <bookTitle>Tropical Siberian Vacations</bookTitle> <author>Boris Tzchleikovsy</author> </pub> <pub> <bookTitle>Children's Bedtime Stories</bookTitle> <artTitle>Jack the Axe Murderer</artTitle> <author>Caroline Black</author> </pub> <pub>
<artTitle>Global Commodities Market Downturn</artTitle>
<bookTitle>The Economist</bookTitle>
<pubDate>
<month>June</month>
<year>1992</year>
</pubdate>
</pub>Namebreak — A linebreak Deprecated SynopsisContent ModelEMPTY Attributes
DescriptionImportantThis element is deprecated as of XML Résumé Library version 1.3.3. It should not be used. break was introduced to allow linebreaks in free-form addresses, but the stylesheets have been modified so that they don't need an explicit linebreak marker. Instead, linebreaks in source text are formatted as linebreaks in formatted text. The break element indicates a position in text where a linebreak should occur. Parentsbreak may be contained in these elements: address ExamplesNone. Namecitation — The name of a work being referenced SynopsisContent Model(#PCDATA) Attributes
DescriptionThe citation element marks the title of a book, website, course, or other work. Parentscitation may be contained in these elements: achievement, employer, institution, organization, para, project, skill See Alsopub. Examples<achievement> Increased earnings 341%, thereby landing Acme Widgets on <citation>Fortune Magazine</citation>'s Fortune 500 list. </achievement> <para> More information on the AHTM system is published in <citation>Developing Today</citation> at <url>http://www.dtoday.bob/tips.html</url>. </para> Namecity — The name of a city SynopsisContent Model(#PCDATA) Attributes
DescriptionThe city element contains a the name of a single city or other similar municipality. Attributes
See Alsocounty, prefecture, suburb, ward. Examples<address> <street>3400 N. 5230 S.</street> <city>Salt Lake City</city> <state>UT</state> <zip>84352</zip> </address> Nameclearance — A security clearance SynopsisContent Model(level,organization?,(date|period)?,note?) Attributes
DescriptionThe clearance element contains a single security clearance (e.g. “Top Secret”). Parentsclearance may be contained in these elements: clearances Examples<clearance> <level>Super-duper it-doesn't-even-exist extra secret</level> <organization>NATO</organization> </clearance> <clearance> <level>Top Secret</level> <organization>CIA</organization> <date><year>2002</year></date> <note>Full polygraph test performed.</note> </clearance> Nameclearances — One or more security clearances DescriptionThe clearances element contains one or more security clearances. It is a top-level section of a résumé. Parentsclearances may be contained in these elements: resume Examples<clearances>
<clearance>
<level>Top Secret</level>
<organization>NSA</organization>
</clearance>
<clearance>
<level>Secret</level>
<organization>US Navy</organization>
</clearance>
</clearances>Namecompany — The name of a company Deprecated SynopsisContent Model(#PCDATA) Attributes
DescriptionImportantThis element is deprecated as of XML Résumé Library version 1.3.3. It should not be used. Parentscompany may be contained in these elements: None See AlsoExamplesNone. Namecontact — Container for one or more methods of contacting someone SynopsisAttributes
DescriptionThe contact element is a container that holds elements that specify how to contact a person. The information it contains is similar to what would be printed on a business card. See AlsoExamples<contact> <phone>555-555-1212</phone> <email>sam.jones@xyz.bob</email> <url>http://www.xyz.bob/~sam.jones/</url> </contact> <contact> <phone>123-123-1234 x123</phone> </contact> <contact> <email>kawanza_eloma@hotmail.bob</email> </contact> Namecopyright — A copyright notice DescriptionThe copyright element defines a copyright notice. The notice must include the year of copyright; it may also include the name of the copyright owner and a legal notice. Parentscopyright may be contained in these elements: resume Examples<resume>
<copyright>
<year>1892</year>
<name>
<firstname>Fluisha</firstname>
<surname>Copenhagen</surname>
</name>
<legalnotice>
<para>
All rights reserved. This document may not be copied or distributed
without permission.
</para>
</legalnotice>
</copyright>
</resume><copyright> <year>2001</year> </copyright> Namecountry — A country name SynopsisContent Model(#PCDATA) Attributes
DescriptionThe country element marks the name of a country. Attributes
Examples<address> <city>Portland</city> <state>Oregon</state> <country>USA</country> </address> <address> <street>2621 Green Loop</street> <street>Southam</street> <city>Wiggleworm</city> <postalCode>S521 2GR</postalCode> <country>UK</country> </address> Namecounty — A county name SynopsisContent Model(#PCDATA) Attributes
DescriptionThe county element specifies the name of a county (not to be confused with country). In the United States, a county is “an administrative subdivision of a state”. In the UK, it is a “territorial division exercising administrative, judicial, and political functions.” (Source: The American Heritage Dictionary of the English Language, 1979 Ed. Houghton Mifflin, Boston.) Attributes
See AlsoExamples<address> <city>North Willow</city> <county>Washington</county> <state>New Canada</state> </address> <address> <street>1 O'Leary Place</street> <city>Coby</city> <county>Co. Cork</county> <country>Ireland</country> </address> Namedate — A specific instant in time DescriptionThe date element represents a specific instant in time, with at least year-level granularity, and at most day-level granularity. When contained inside a pub element, date represents the date that the work was published. When contained inside a clearance element, date represents the date that the security clearance was granted. NoteThe month element was made optional in version 1.4.0 of the XML Résumé Library. It was previously required. To represent a period of time, instead of a specific instant, use period. |