revegen ramp up. here we go!

This commit is contained in:
2024-11-04 16:19:43 -06:00
parent 4a6c05c37f
commit d559e51e6e
249 changed files with 31328 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
124-130.xsl
Convert XML Resume from version 1.2.4 to version 1.3.0.
Copyright (c) 2002 Sean Kelly
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the
distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
$Id: 124-130.xsl,v 1.1 2002/05/26 03:45:51 bruckie Exp $
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="no" indent="yes" encoding="UTF-8"/>
<xsl:preserve-space elements="*"/>
<!-- The "subject" area of an academic degree is now the "major". -->
<xsl:template match="subject">
<major><xsl:apply-templates/></major>
</xsl:template>
<!-- Everything else stays the same -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
13x-140.xsl
Convert XML Resume from version 1.3.1, 1.3.2, or 1.3.3 to version 1.4.0.
Copyright (c) 2002 Sean Kelly, Bruce Christensen
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the
distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
$Id: 13x-140.xsl,v 1.1 2002/05/26 03:45:51 bruckie Exp $
-->
<xsl:stylesheet version="1.0"
xmlns:r="http://xmlresume.sourceforge.net/resume/0.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="no" indent="yes"
encoding="UTF-8"
doctype-public="-//Sean Kelly//DTD Resume 1.4.0//EN"
doctype-system="http://xmlresume.sourceforge.net/dtd/resume.dtd"
/>
<xsl:preserve-space elements="*"/>
<!-- <skillareas> is deprecated. <skillarea> may now appear directly in
<resume>. -->
<xsl:template match="r:skillareas">
<xsl:apply-templates/>
</xsl:template>
<!-- <skills> is deprecated. <skill> may now appear directly in <skillset> -->
<xsl:template match="r:skills">
<xsl:apply-templates/>
</xsl:template>
<!-- <pubDate> is deprecated. It should be replaced with <date>. -->
<xsl:template match="r:pubDate">
<r:date><xsl:apply-templates/></r:date>
</xsl:template>
<!-- <street2> is deprecated. It should be replaced with <street>. -->
<xsl:template match="r:street2">
<r:street><xsl:apply-templates/></r:street>
</xsl:template>
<!-- <company> is deprecated. Display its child nodes. -->
<xsl:template match="r:break">
<xsl:apply-templates/>
</xsl:template>
<!-- <break> is deprecated. It should be removed. -->
<xsl:template match="r:break">
<!-- Suppress -->
</xsl:template>
<!-- <docpath> and related tags are deprecated. They should be removed. -->
<xsl:template match="r:docpath | r:head | r:node | r:tail | r:label | r:uri">
<!-- Suppress -->
</xsl:template>
<!-- Everything else stays the same -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,276 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- -->
<!-- Default XSL stylesheet for use by com.lotus.xsl.server#DefaultApplyXSL. -->
<!-- -->
<!-- This stylesheet mimics the default behavior of IE when XML data is displayed -->
<!-- without a corresponding XSL stylesheet. This stylesheet uses JavaScript -->
<!-- to accommodate node expansion and contraction. -->
<!-- -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns="http://www.w3.org/TR/REC-html40">
<xsl:output method="html" indent="no"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<HTML>
<HEAD>
<STYLE type="text/css">
BODY {font:x-small 'Verdana'; margin-right:1.5em}
<!-- container for expanding/collapsing content -->
.c {cursor:hand}
<!-- button - contains +/-/nbsp -->
.b {color:red; font-family:'Courier New'; font-weight:bold; text-decoration:none}
<!-- element container -->
.e {margin-left:1em; text-indent:-1em; margin-right:1em}
<!-- comment or cdata -->
.k {margin-left:1em; text-indent:-1em; margin-right:1em}
<!-- tag -->
.t {color:#990000}
<!-- tag in xsl namespace -->
.xt {color:#990099}
<!-- attribute in xml or xmlns namespace -->
.ns {color:red}
<!-- markup characters -->
.m {color:blue}
<!-- text node -->
.tx {font-weight:bold}
<!-- multi-line (block) cdata -->
.db {text-indent:0px; margin-left:1em; margin-top:0px; margin-bottom:0px;
padding-left:.3em; border-left:1px solid #CCCCCC; font:small Courier}
<!-- single-line (inline) cdata -->
.di {font:small Courier}
<!-- DOCTYPE declaration -->
.d {color:blue}
<!-- pi -->
.pi {color:blue}
<!-- multi-line (block) comment -->
.cb {text-indent:0px; margin-left:1em; margin-top:0px; margin-bottom:0px;
padding-left:.3em; font:small Courier; color:#888888}
<!-- single-line (inline) comment -->
.ci {font:small Courier; color:#888888}
PRE {margin:0px; display:inline}
</STYLE>
<SCRIPT type="text/javascript"><xsl:comment><![CDATA[
// Detect and switch the display of CDATA and comments from an inline view
// to a block view if the comment or CDATA is multi-line.
function f(e)
{
// if this element is an inline comment, and contains more than a single
// line, turn it into a block comment.
if (e.className == "ci") {
if (e.children(0).innerText.indexOf("\n") > 0)
fix(e, "cb");
}
// if this element is an inline cdata, and contains more than a single
// line, turn it into a block cdata.
if (e.className == "di") {
if (e.children(0).innerText.indexOf("\n") > 0)
fix(e, "db");
}
// remove the id since we only used it for cleanup
e.id = "";
}
// Fix up the element as a "block" display and enable expand/collapse on it
function fix(e, cl)
{
// change the class name and display value
e.className = cl;
e.style.display = "block";
// mark the comment or cdata display as a expandable container
j = e.parentElement.children(0);
j.className = "c";
// find the +/- symbol and make it visible - the dummy link enables tabbing
k = j.children(0);
k.style.visibility = "visible";
k.href = "#";
}
// Change the +/- symbol and hide the children. This function works on "element"
// displays
function ch(e)
{
// find the +/- symbol
mark = e.children(0).children(0);
// if it is already collapsed, expand it by showing the children
if (mark.innerText == "+")
{
mark.innerText = "-";
for (var i = 1; i < e.children.length; i++)
e.children(i).style.display = "block";
}
// if it is expanded, collapse it by hiding the children
else if (mark.innerText == "-")
{
mark.innerText = "+";
for (var i = 1; i < e.children.length; i++)
e.children(i).style.display="none";
}
}
// Change the +/- symbol and hide the children. This function work on "comment"
// and "cdata" displays
function ch2(e)
{
// find the +/- symbol, and the "PRE" element that contains the content
mark = e.children(0).children(0);
contents = e.children(1);
// if it is already collapsed, expand it by showing the children
if (mark.innerText == "+")
{
mark.innerText = "-";
// restore the correct "block"/"inline" display type to the PRE
if (contents.className == "db" || contents.className == "cb")
contents.style.display = "block";
else contents.style.display = "inline";
}
// if it is expanded, collapse it by hiding the children
else if (mark.innerText == "-")
{
mark.innerText = "+";
contents.style.display = "none";
}
}
// Handle a mouse click
function cl()
{
e = window.event.srcElement;
// make sure we are handling clicks upon expandable container elements
if (e.className != "c")
{
e = e.parentElement;
if (e.className != "c")
{
return;
}
}
e = e.parentElement;
// call the correct funtion to change the collapse/expand state and display
if (e.className == "e")
ch(e);
if (e.className == "k")
ch2(e);
}
// Erase bogus link info from the status window
function h()
{
window.status=" ";
}
// Set the onclick handler
document.onclick = cl;
]]>//</xsl:comment></SCRIPT>
</HEAD>
<BODY class="st"><xsl:apply-templates/></BODY>
</HTML>
</xsl:template>
<!-- Templates for each node type follows. The output of each template has a similar structure
to enable script to walk the result tree easily for handling user interaction. -->
<!-- Template for pis not handled elsewhere -->
<xsl:template match="processing-instruction()">
<DIV class="e">
<SPAN class="b">&#160;</SPAN>
<SPAN class="m">&lt;?</SPAN><SPAN class="pi"><xsl:value-of select="name(.)"/> <xsl:value-of select="."/></SPAN><SPAN class="m">?&gt;</SPAN>
</DIV>
</xsl:template>
<!-- Template for the XML declaration. Need a separate template because the pseudo-attributes
are actually exposed as attributes instead of just element content, as in other pis
<xsl:template match="processing-instruction('xml')">
<DIV class="e">
<SPAN class="b">&#160;</SPAN>
<SPAN class="m">&lt;?</SPAN><SPAN class="pi">xml <xsl:for-each select="@*"><xsl:value-of select="name(.)"/>="<xsl:value-of select="."/>" </xsl:for-each></SPAN><SPAN class="m">?&gt;</SPAN>
</DIV>
</xsl:template>
-->
<!-- Template for attributes not handled elsewhere -->
<xsl:template match="@*"><SPAN class="t"><xsl:text> </xsl:text><xsl:value-of select="name(.)"/></SPAN><SPAN class="m">="</SPAN><B><xsl:value-of select="."/></B><SPAN class="m">"</SPAN></xsl:template>
<!-- Template for attributes in the xmlns or xml namespace
<xsl:template match="@xmlns:*|@xmlns|@xml:*"><SPAN class="ns"> <xsl:value-of select="name(.)"/></SPAN><SPAN class="m">="</SPAN><B class="ns"><xsl:value-of select="."/></B><SPAN class="m">"</SPAN></xsl:template>
-->
<!-- Template for text nodes -->
<xsl:template match="text()">
<xsl:choose><xsl:when test="name(.) = '#cdata-section'"><xsl:call-template name="cdata"/></xsl:when>
<xsl:otherwise><DIV class="e">
<SPAN class="b">&#160;</SPAN>
<SPAN class="tx"><xsl:value-of select="."/></SPAN>
</DIV></xsl:otherwise></xsl:choose>
</xsl:template>
<!-- Template for comment nodes -->
<xsl:template match="comment()">
<DIV class="k">
<SPAN><A class="b" onclick="return false" onfocus="h()" STYLE="visibility:hidden">-</A> <SPAN class="m">&lt;!--</SPAN></SPAN>
<SPAN id="clean" class="ci"><PRE><xsl:value-of select="."/></PRE></SPAN>
<SPAN class="b">&#160;</SPAN> <SPAN class="m">--&gt;</SPAN>
<SCRIPT>f(clean);</SCRIPT></DIV>
</xsl:template>
<!-- Template for cdata nodes -->
<xsl:template name="cdata">
<DIV class="k">
<SPAN><A class="b" onclick="return false" onfocus="h()" STYLE="visibility:hidden">-</A> <SPAN class="m">&lt;![CDATA[</SPAN></SPAN>
<SPAN id="clean" class="di"><PRE><xsl:value-of select="."/></PRE></SPAN>
<SPAN class="b">&#160;</SPAN> <SPAN class="m">]]&gt;</SPAN>
<SCRIPT>f(clean);</SCRIPT></DIV>
</xsl:template>
<!-- Template for elements not handled elsewhere (leaf nodes) -->
<xsl:template match="*">
<DIV class="e"><DIV STYLE="margin-left:1em;text-indent:-2em">
<SPAN class="b">&#160;</SPAN>
<SPAN class="m">&lt;</SPAN><SPAN class="t"><xsl:value-of select="name(.)"/></SPAN> <xsl:apply-templates select="@*"/><SPAN class="m"> /&gt;</SPAN>
</DIV></DIV>
</xsl:template>
<!-- Template for elements with comment, pi and/or cdata children
<xsl:template match="*[comment() or processing-instruction() or cdata()]">
<DIV class="e">
<DIV class="c"><A href="#" onclick="return false" onfocus="h()" class="b">-</A> <SPAN class="m">&lt;</SPAN><SPAN><xsl:attribute name="class"><xsl:if test="xsl:*">x</xsl:if>t</xsl:attribute><xsl:value-of select="name(.)"/></SPAN><xsl:apply-templates select="@*"/> <SPAN class="m">&gt;</SPAN></DIV>
<DIV><xsl:apply-templates/>
<DIV><SPAN class="b">&#160;</SPAN> <SPAN class="m">&lt;/</SPAN><SPAN><xsl:attribute name="class"><xsl:if test="xsl:*">x</xsl:if>t</xsl:attribute><xsl:value-of select="name(.)"/></SPAN><SPAN class="m">&gt;</SPAN></DIV>
</DIV></DIV>
</xsl:template> -->
<!-- Template for elements with only text children -->
<xsl:template match="*[text() and not(comment() or processing-instruction() or *)]">
<DIV class="e"><DIV STYLE="margin-left:1em;text-indent:-2em">
<SPAN class="b">&#160;</SPAN> <SPAN class="m">&lt;</SPAN><SPAN class="t"><xsl:value-of select="name(.)"/></SPAN><xsl:apply-templates select="@*"/>
<SPAN class="m">&gt;</SPAN><SPAN class="tx"><xsl:value-of select="."/></SPAN><SPAN class="m">&lt;/</SPAN><SPAN class="t"><xsl:value-of select="name(.)"/></SPAN><SPAN class="m">&gt;</SPAN>
</DIV></DIV>
</xsl:template>
<!-- Template for elements with element children -->
<xsl:template match="*[*]">
<DIV class="e">
<DIV class="c" STYLE="margin-left:1em;text-indent:-2em"><A href="#" onclick="return false" onfocus="h()" class="b">-</A> <SPAN class="m">&lt;</SPAN><SPAN class="t"><xsl:value-of select="name(.)"/></SPAN><xsl:apply-templates select="@*"/><SPAN class="m">&gt;</SPAN></DIV>
<DIV><xsl:apply-templates/>
<DIV><SPAN class="b">&#160;</SPAN><SPAN class="m">&lt;/</SPAN><SPAN class="t"><xsl:value-of select="name(.)"/></SPAN><SPAN class="m">&gt;</SPAN></DIV>
</DIV></DIV>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,690 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
NOTE: Usage of this file is or should be
deprecated. We suggest using CSS instead.
- brandondoyle 10/29/02
html.xsl
Transform XML resume into HTML, styled similar to Microsoft Word's Contemporary
resume template.
Copyright (c) 2000-2002 Sean Kelly
All rights reserved.
[modifications to mimic standard contemporary resume by Rob Kelley]
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the
distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="html" omit-xml-declaration="yes" indent="yes" encoding="UTF-8" doctype-public="-//W3C//DTD HTML 4.0//EN"/>
<xsl:strip-space elements="*"/>
<xsl:include href="./common/params.xsl"/>
<xsl:include href="./common/address.xsl"/>
<xsl:include href="./common/pub.xsl"/>
<xsl:template match="/">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>
<xsl:apply-templates select="resume/header/name/firstname"/>
<xsl:text> </xsl:text>
<xsl:apply-templates select="resume/header/name/surname"/>
<xsl:text> - </xsl:text>
<xsl:value-of select="$resume.word"/>
</title>
<!--override stored resume.css with resume_contemporary.css *RK* -->
<link rel="stylesheet" type="text/css" href="./css/resume_contemporary.css"/>
<!--<link rel="stylesheet" type="text/css">
<xsl:attribute name="href"><xsl:value-of select="$css.href"/></xsl:attribute>
</link>-->
<xsl:apply-templates select="resume/keywords" mode="header"/>
</head>
<body class="resume">
<table >
<tr>
<td>
<xsl:apply-templates select="resume"/>
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
<!-- Suppress the keywords in the main body of the document -->
<xsl:template match="keywords"/>
<!-- But put them into the HTML header. -->
<xsl:template match="keywords" mode="header">
<meta name="keywords">
<xsl:attribute name="content"><xsl:apply-templates select="keyword"/></xsl:attribute>
</meta>
</xsl:template>
<xsl:template match="keyword">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:template>
<!-- Output your name and the word "Resume". -->
<xsl:template name="standard.header">
<!--Apply "contemporary" styling to contact info *RK*-->
<div>
<table class="address">
<tr>
<td class="address1cell" valign="top">
<xsl:apply-templates select="address"/>
<!--take out contact URL because it isn't displaying nicely. *RK*
<p class="Address1">
<xsl:if test="contact/url">
<xsl:value-of select="$url.word"/>:
<a>
<xsl:attribute name="href">
<xsl:value-of select="contact/url"/>
</xsl:attribute>
<xsl:value-of select="contact/url"/>
</a>
</xsl:if>
</p> -->
</td>
<td class="address2cell">
<xsl:if test="contact/email">
<a>
<xsl:attribute name="href"><xsl:text>mailto:</xsl:text><xsl:value-of select="contact/email"/></xsl:attribute>
<xsl:value-of select="contact/email"/>
</a>
<br/>
</xsl:if>
<xsl:if test="contact/phone">
<xsl:value-of select="contact/phone"/>
<br/>
</xsl:if>
</td>
</tr>
</table>
</div>
<!--Apply "contemporary" styling to class name *RK*-->
<div class="name" valign="top" >
<xsl:apply-templates select="name/firstname"/>
<xsl:text> </xsl:text>
<xsl:apply-templates select="name/surname"/>
</div>
</xsl:template>
<!-- Alternate formatting for the page header. -->
<!-- Display the name and contact information in a single centered block. -->
<!-- Since the 'align' attribute is deprecated, we rely on a CSS -->
<!-- stylesheet to center the headerBlock. -->
<xsl:template name="centered.header">
<div class="headerBlock">
<h1 class="nameHeading">
<xsl:apply-templates select="name"/>
</h1>
<xsl:apply-templates select="address"/>
<br/>
<xsl:if test="contact/phone">
<xsl:value-of select="$phone.word"/>: <xsl:value-of select="contact/phone"/>
<br/>
</xsl:if>
<xsl:if test="contact/email">
<xsl:value-of select="$email.word"/>: <a>
<xsl:attribute name="href"><xsl:text>mailto:</xsl:text><xsl:value-of select="contact/email"/></xsl:attribute>
<xsl:value-of select="contact/email"/>
</a>
<br/>
</xsl:if>
<xsl:if test="contact/url">
<xsl:value-of select="$url.word"/>: <a>
<xsl:attribute name="href"><xsl:value-of select="contact/url"/></xsl:attribute>
<xsl:value-of select="contact/url"/>
</a>
</xsl:if>
</div>
</xsl:template>
<xsl:template match="header">
<xsl:choose>
<xsl:when test="$header.format = 'centered'">
<xsl:call-template name="centered.header"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="standard.header"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="address" mode="standard">
<!-- templates defined in address.xsl for setting standard fields -->
<xsl:variable name="AdminDivision">
<xsl:call-template name="AdminDivision"/>
</xsl:variable>
<xsl:variable name="CityDivision">
<xsl:call-template name="CityDivision"/>
</xsl:variable>
<xsl:variable name="PostCode">
<xsl:call-template name="PostCode"/>
</xsl:variable>
<xsl:value-of select="street"/>
<br/>
<xsl:if test="street2">
<xsl:value-of select="street2"/>
<br/>
</xsl:if>
<xsl:if test="string-length($CityDivision) &gt; 0">
<xsl:value-of select="$CityDivision"/>
<br/>
</xsl:if>
<xsl:value-of select="city"/>
<xsl:if test="string-length($AdminDivision) &gt; 0">
<xsl:text>, </xsl:text>
<xsl:value-of select="$AdminDivision"/>
</xsl:if>
<xsl:if test="string-length($PostCode) &gt; 0">
<xsl:text/>
<xsl:value-of select="$PostCode"/>
</xsl:if>
<xsl:if test="country">
<br/>
<xsl:value-of select="country"/>
</xsl:if>
</xsl:template>
<xsl:template match="address" mode="european">
<!-- templates defined in address.xsl for setting standard fields -->
<xsl:variable name="AdminDivision">
<xsl:call-template name="AdminDivision"/>
</xsl:variable>
<xsl:variable name="CityDivision">
<xsl:call-template name="CityDivision"/>
</xsl:variable>
<xsl:variable name="PostCode">
<xsl:call-template name="PostCode"/>
</xsl:variable>
<xsl:value-of select="street"/>
<br/>
<xsl:if test="street2">
<xsl:value-of select="street2"/>
<br/>
</xsl:if>
<xsl:if test="string-length($CityDivision) &gt; 0">
<xsl:value-of select="$CityDivision"/>
<br/>
</xsl:if>
<xsl:if test="string-length($PostCode) &gt; 0">
<xsl:value-of select="$PostCode"/>
<xsl:text/>
</xsl:if>
<xsl:value-of select="city"/>
<xsl:if test="string-length($AdminDivision) &gt; 0">
<br/>
<xsl:value-of select="$AdminDivision"/>
</xsl:if>
<xsl:if test="country">
<br/>
<xsl:value-of select="country"/>
</xsl:if>
</xsl:template>
<xsl:template match="address" mode="italian">
<xsl:value-of select="street"/>
<br/>
<xsl:if test="street2">
<xsl:value-of select="street2"/>
<br/>
</xsl:if>
<xsl:if test="postalCode">
<xsl:value-of select="postalCode"/>
<xsl:text/>
</xsl:if>
<xsl:value-of select="city"/>
<xsl:if test="province">
<xsl:text> (</xsl:text>
<xsl:value-of select="province"/>
<xsl:text>)</xsl:text>
</xsl:if>
<xsl:if test="country">
<br/>
<xsl:value-of select="country"/>
</xsl:if>
</xsl:template>
<!-- Preserve line breaks within a free format address -->
<xsl:template match="address//text()">
<xsl:call-template name="PreserveLinebreaks">
<xsl:with-param name="Text" select="."/>
</xsl:call-template>
</xsl:template>
<xsl:template name="PreserveLinebreaks">
<xsl:param name="Text"/>
<xsl:choose>
<xsl:when test="contains($Text, '&#xA;')">
<xsl:value-of select="substring-before($Text, '&#xA;')"/>
<br/>
<xsl:call-template name="PreserveLinebreaks">
<xsl:with-param name="Text" select="substring-after($Text, '&#xA;')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$Text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!--Give objective "contemporary" style *RK* -->
<xsl:template match="objective">
<table class="MsoNormalTable">
<tr>
<td class="SectionDescriptor">
<p class="SectionTitle">
<!--take out dynamic section title in order to show shorter (hardcoded) name. *RK*
<xsl:value-of select="$objective.word"/>
-->
<xsl:text>Objective</xsl:text>
</p>
</td>
<td class="SectionContent">
<p class="Summary">
<xsl:apply-templates/>
</p>
</td>
</tr>
</table>
</xsl:template>
<!-- Give History "contemporary" style *RK* -->
<xsl:template match="history">
<table class="MsoNormalTable">
<tr>
<td class="SectionDescriptor">
<p class="SectionTitle">
<!--take out dynamic section title in order to show shorter (hardcoded) name. *RK*
<xsl:value-of select="$history.word"/>
-->
<xsl:text>Experience</xsl:text>
</p>
</td>
<td class="SectionContent">
<p class="Summary">
<xsl:apply-templates select="job"/>
</p>
</td>
</tr>
</table>
</xsl:template>
<!-- Academics, with "contemporary" style -->
<xsl:template match="academics">
<table>
<tr>
<td class="SectionDescriptor" >
<p class="SectionTitle">
<!--take out dynamic section title in order to show shorter (hardcoded) name. *RK*
<xsl:value-of select="$academics.word"/>
-->
<xsl:text>Education</xsl:text>
</p>
</td>
<td class="SectionContent">
<p class="Summary">
<xsl:apply-templates select="degrees"/>
<xsl:apply-templates select="note"/>
</p>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="degrees">
<p>
<xsl:apply-templates select="degree"/>
</p>
<xsl:apply-templates select="note"/>
</xsl:template>
<xsl:template match="note">
<div class="note">
<xsl:apply-templates/>
</div>
</xsl:template>
<xsl:template match="degree">
<div class="date">
<xsl:if test="date">
<xsl:apply-templates select="date/month"/>
<xsl:text> </xsl:text>
<xsl:apply-templates select="date/year"/>
<xsl:text> </xsl:text>
</xsl:if>
</div>
<div class="institution">
<xsl:value-of select="institution"/>
</div>
<br/>
<div class="skill" style="font-size:10.0pt">
§</div>
<div class="achievement">
<acronym class="level">
<xsl:value-of select="level"/>
</acronym>
<xsl:text> </xsl:text>
<xsl:value-of select="$in.word"/>
<xsl:text> </xsl:text>
<xsl:value-of select="major"/>
<xsl:text> </xsl:text>
<xsl:if test="subjects/subject">
<xsl:apply-templates select="subjects"/>
</xsl:if>
</div>
<br/>
<div class="skill" style="font-size:10.0pt">
§</div>
<div class='achievement'>
<xsl:if test="annotation">
<xsl:apply-templates select="annotation"/>
</xsl:if>
</div>
</xsl:template>
<!-- Format the subjects -->
<xsl:template match="subjects">
<table>
<xsl:for-each select="subject">
<tr>
<td />
<td>
<xsl:value-of select="title"/>
</td>
<td width="10"/>
<td>
<xsl:value-of select="result"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
<!-- Format each job -->
<xsl:template match="job">
<xsl:apply-templates select="period"/>
<div class="employer">
<xsl:value-of select="employer"/>
</div>
<xsl:if test="city">
<div class="citystate">
<xsl:apply-templates select="citystate"/>
</div>
</xsl:if>
<div class="jobtitle">
<xsl:value-of select="jobtitle"/>
</div>
<xsl:apply-templates select="description"/>
<xsl:if test="projects/project">
<xsl:value-of select="$projects.word"/>
<xsl:apply-templates select="projects"/>
</xsl:if>
<xsl:if test="achievements/achievement">
<xsl:apply-templates select="achievements"/>
</xsl:if>
</xsl:template>
<!-- Format the projects section as a bullet list -->
<xsl:template match="projects">
<ul>
<xsl:for-each select="project">
<li class="achievement">
<xsl:apply-templates/>
</li>
</xsl:for-each>
</ul>
</xsl:template>
<xsl:template match="period">
<div class="date">
<xsl:apply-templates select="from"/> - <xsl:apply-templates select="to"/>
</div>
</xsl:template>
<xsl:template match="date">
<xsl:value-of select="month"/>
<xsl:text> </xsl:text>
<xsl:value-of select="year"/>
</xsl:template>
<xsl:template match="present">
<xsl:value-of select="$present.word"/>
</xsl:template>
<!-- Format the achievements with "contemporary" styling *RK* -->
<xsl:template match="achievements">
<xsl:for-each select="achievement">
<div class="skill">
§</div>
<div class="achievement">
<xsl:apply-templates/>
</div>
<br/>
</xsl:for-each>
<p/>
</xsl:template>
<!-- Format the open-ended skills -->
<xsl:template match="skillareas">
<xsl:apply-templates select="skillarea"/>
</xsl:template>
<xsl:template match="skillarea">
<h2 class="skillareaHeading">
<xsl:value-of select="title"/>
</h2>
<xsl:apply-templates select="skillset"/>
</xsl:template>
<xsl:template match="skillset">
<xsl:choose>
<xsl:when test="$skills.format = 'comma'">
<p>
<xsl:apply-templates select="title" mode="comma"/>
<xsl:apply-templates select="skills" mode="comma"/>
</p>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="title" mode="bullet"/>
<xsl:apply-templates select="skills" mode="bullet"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="skillset/title" mode="comma">
<div class="skillsetTitle">
<xsl:value-of select="."/>
<xsl:text>: </xsl:text>
</div>
</xsl:template>
<xsl:template match="skillset/title" mode="bullet">
<h3 class="skillsetTitle">
<xsl:value-of select="."/>
</h3>
</xsl:template>
<!-- format as a comma-separated list -->
<xsl:template match="skills" mode="comma">
<div class="skills">
<xsl:for-each select="skill[position() != last()]">
<xsl:apply-templates/>
<xsl:text>, </xsl:text>
</xsl:for-each>
<xsl:apply-templates select="skill[position() = last()]"/>
</div>
</xsl:template>
<!-- format as a bullet list -->
<xsl:template match="skills" mode="bullet">
<ul class="skills">
<xsl:for-each select="skill">
<li class="skill">
<xsl:apply-templates/>
</li>
</xsl:for-each>
</ul>
</xsl:template>
<!-- Format publications -->
<xsl:template match="pubs">
<h2 class="pubsHeading">
<xsl:value-of select="$publications.word"/>
</h2>
<ul class="pubs">
<xsl:apply-templates select="pub"/>
</ul>
</xsl:template>
<!-- Format a single publication -->
<xsl:template match="pub">
<li class="pub">
<xsl:call-template name="formatPub"/>
</li>
</xsl:template>
<!-- Format the misc info -->
<xsl:template match="misc">
<h2 class="miscHeading">
<xsl:value-of select="$miscellany.word"/>
</h2>
<xsl:apply-templates/>
</xsl:template>
<!-- Format the legalese -->
<xsl:template match="copyright">
<address class="copyright">
<p>
<xsl:value-of select="$copyright.word"/>
<xsl:text> </xsl:text>
<xsl:value-of select="year"/>
<xsl:text> </xsl:text>
<xsl:value-of select="$by.word"/>
<xsl:text> </xsl:text>
<xsl:if test="name">
<xsl:apply-templates select="name"/>
</xsl:if>
<xsl:if test="not(name)">
<xsl:apply-templates select="/resume/header/name"/>
</xsl:if>
<xsl:text>. This document uses </xsl:text>
<a>
<xsl:attribute name="href">http://xmlresume.sourceforge.net</xsl:attribute>
XMLResume</a>
<xsl:value-of select="legalnotice"/>
</p>
</address>
</xsl:template>
<!-- Put a space between first and last name -->
<xsl:template match="name">
<xsl:value-of select="firstname"/>
<xsl:text> </xsl:text>
<xsl:if test="middlenames">
<xsl:value-of select="middlenames"/>
<xsl:text> </xsl:text>
</xsl:if>
<xsl:value-of select="surname"/>
<xsl:if test="suffix">
<xsl:text> </xsl:text>
<xsl:value-of select="suffix"/>
</xsl:if>
</xsl:template>
<!-- para -> p -->
<xsl:template match="para">
<p class="para">
<xsl:apply-templates/>
</p>
</xsl:template>
<!-- emphasis -> strong -->
<xsl:template match="emphasis">
<strong class="emphasis">
<xsl:value-of select="."/>
</strong>
</xsl:template>
<!-- url -> monospace along with href -->
<xsl:template match="url">
<a class="urlA">
<xsl:attribute name="href"><xsl:value-of select="."/></xsl:attribute>
<xsl:value-of select="."/>
</a>
</xsl:template>
<!-- citation -> cite -->
<xsl:template match="citation">
<cite class="citation">
<xsl:value-of select="."/>
</cite>
</xsl:template>
<!-- Format the referees -->
<xsl:template match="referees">
<h2 class="refereesHeading">
<xsl:value-of select="$referees.word"/>
</h2>
<xsl:apply-templates select="referee"/>
</xsl:template>
<xsl:template match="referee">
<h3 class="refereeHeading">
<xsl:apply-templates select="name"/>
</h3>
<p>
<xsl:apply-templates select="address"/>
<br/>
<!-- Don't print the label if the field value is empty *SE* -->
<xsl:if test="contact/phone">
<xsl:value-of select="$phone.word"/>: <xsl:value-of select="contact/phone"/>
<br/>
</xsl:if>
<xsl:if test="contact/email">
<xsl:value-of select="$email.word"/>: <a>
<xsl:attribute name="href"><xsl:text>mailto:</xsl:text><xsl:value-of select="contact/email"/></xsl:attribute>
<xsl:value-of select="contact/email"/>
</a>
<br/>
</xsl:if>
<xsl:if test="contact/url">
<xsl:value-of select="$url.word"/>: <a>
<xsl:attribute name="href"><xsl:value-of select="contact/url"/></xsl:attribute>
<xsl:value-of select="contact/url"/>
</a>
</xsl:if>
</p>
</xsl:template>
<!-- Wrap a description up in a div -->
<xsl:template match="description">
<div class="description">
<xsl:apply-templates/>
</div>
</xsl:template>
<!-- Format the memberships with "contemporary" styling *RK* -->
<xsl:template match="memberships">
<table class="MsoNormalTable">
<tr>
<td class="SectionDescriptor" >
<p class="SectionTitle" style="margin-top: 4.0pt">
<xsl:apply-templates select="title"/>
</p>
</td>
<td class="SectionContent">
<p class="Summary" >
<xsl:apply-templates select="membership"/>
</p>
</td>
</tr>
</table>
</xsl:template>
<!-- A single membership. -->
<xsl:template match="membership">
<xsl:if test="title">
<div class="membershipTitle">
<xsl:value-of select="title"/>
</div>
<br/>
</xsl:if>
<xsl:if test="organization">
<div class="organization">
<xsl:value-of select="organization"/>
</div>
</xsl:if>
<xsl:if test="period">
<xsl:apply-templates select="period"/>
<br/>
</xsl:if>
<xsl:apply-templates select="description"/>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,688 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
NOTE: Usage of this file is or should be
deprecated. We suggest using CSS instead.
- brandondoyle 10/29/02
html_professional.xsl
Transform XML resume into HTML, styled similar to Microsoft Word's Professional
resume template.
Copyright (c) 2000-2002 Sean Kelly
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the
distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="html" omit-xml-declaration="yes" indent="yes" encoding="UTF-8" doctype-public="-//W3C//DTD HTML 4.0//EN"/>
<xsl:strip-space elements="*"/>
<xsl:include href="./common/params.xsl"/>
<xsl:include href="./common/address.xsl"/>
<xsl:include href="./common/pub.xsl"/>
<xsl:template match="/">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>
<xsl:apply-templates select="resume/header/name/firstname"/>
<xsl:text> </xsl:text>
<xsl:apply-templates select="resume/header/name/surname"/>
<xsl:text> - </xsl:text>
<xsl:value-of select="$resume.word"/>
</title>
<!--override stored resume.css with resume_contemporary.css *RK* -->
<link rel="stylesheet" type="text/css" href="./css/resume_professional.css"/>
<!--<link rel="stylesheet" type="text/css">
<xsl:attribute name="href"><xsl:value-of select="$css.href"/></xsl:attribute>
</link>-->
<xsl:apply-templates select="resume/keywords" mode="header"/>
</head>
<body class="resume">
<table >
<tr>
<td>
<xsl:apply-templates select="resume"/>
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
<!-- Suppress the keywords in the main body of the document -->
<xsl:template match="keywords"/>
<!-- But put them into the HTML header. -->
<xsl:template match="keywords" mode="header">
<meta name="keywords">
<xsl:attribute name="content"><xsl:apply-templates select="keyword"/></xsl:attribute>
</meta>
</xsl:template>
<xsl:template match="keyword">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:template>
<!-- Output your name and the word "Resume". -->
<xsl:template name="standard.header">
<!--add "professional" formatting for contact info *RK* -->
<div>
<table class="address">
<tr style="mso-yfti-irow:0;mso-yfti-lastrow:yes">
<td class="address1cell" valign="top">
<xsl:apply-templates select="address"/>
<!-- take out contact URL because it isn't displaying nicely. *RK*
<p class="Address1">
<xsl:if test="contact/url">
<xsl:value-of select="$url.word"/>:
<a>
<xsl:attribute name="href">
<xsl:value-of select="contact/url"/>
</xsl:attribute>
<xsl:value-of select="contact/url"/>
</a>
</xsl:if>
</p> -->
</td>
<td style="address2cell">
<xsl:if test="contact/email">
<a>
<xsl:attribute name="href"><xsl:text>mailto:</xsl:text><xsl:value-of select="contact/email"/></xsl:attribute>
<xsl:value-of select="contact/email"/>
</a>
<br/>
</xsl:if>
<xsl:if test="contact/phone">
<xsl:value-of select="contact/phone"/>
<br/>
</xsl:if>
</td>
</tr>
</table>
</div>
<!--add "professional" style for name *RK*-->
<div style="border:none;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:
solid windowtext .75pt;padding:0in 0pt 0pt 0in">
<div class="name" valign="top" style="padding-left: 4.0pt; padding-right: 5.4pt; padding-top: 5.4pt; padding-bottom: 0in">
<xsl:apply-templates select="name/firstname"/>
<xsl:text> </xsl:text>
<xsl:apply-templates select="name/surname"/>
</div>
</div>
</xsl:template>
<!-- Alternate formatting for the page header. -->
<!-- Display the name and contact information in a single centered block. -->
<!-- Since the 'align' attribute is deprecated, we rely on a CSS -->
<!-- stylesheet to center the headerBlock. -->
<xsl:template name="centered.header">
<div class="headerBlock">
<h1 class="nameHeading">
<xsl:apply-templates select="name"/>
</h1>
<xsl:apply-templates select="address"/>
<br/>
<xsl:if test="contact/phone">
<xsl:value-of select="$phone.word"/>: <xsl:value-of select="contact/phone"/>
<br/>
</xsl:if>
<xsl:if test="contact/email">
<xsl:value-of select="$email.word"/>: <a>
<xsl:attribute name="href"><xsl:text>mailto:</xsl:text><xsl:value-of select="contact/email"/></xsl:attribute>
<xsl:value-of select="contact/email"/>
</a>
<br/>
</xsl:if>
<xsl:if test="contact/url">
<xsl:value-of select="$url.word"/>: <a>
<xsl:attribute name="href"><xsl:value-of select="contact/url"/></xsl:attribute>
<xsl:value-of select="contact/url"/>
</a>
</xsl:if>
</div>
</xsl:template>
<xsl:template match="header">
<xsl:choose>
<xsl:when test="$header.format = 'centered'">
<xsl:call-template name="centered.header"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="standard.header"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="address" mode="standard">
<!-- templates defined in address.xsl for setting standard fields -->
<xsl:variable name="AdminDivision">
<xsl:call-template name="AdminDivision"/>
</xsl:variable>
<xsl:variable name="CityDivision">
<xsl:call-template name="CityDivision"/>
</xsl:variable>
<xsl:variable name="PostCode">
<xsl:call-template name="PostCode"/>
</xsl:variable>
<xsl:value-of select="street"/>
<br/>
<xsl:if test="street2">
<xsl:value-of select="street2"/>
<br/>
</xsl:if>
<xsl:if test="string-length($CityDivision) &gt; 0">
<xsl:value-of select="$CityDivision"/>
<br/>
</xsl:if>
<xsl:value-of select="city"/>
<xsl:if test="string-length($AdminDivision) &gt; 0">
<xsl:text>, </xsl:text>
<xsl:value-of select="$AdminDivision"/>
</xsl:if>
<xsl:if test="string-length($PostCode) &gt; 0">
<xsl:text/>
<xsl:value-of select="$PostCode"/>
</xsl:if>
<xsl:if test="country">
<br/>
<xsl:value-of select="country"/>
</xsl:if>
</xsl:template>
<xsl:template match="address" mode="european">
<!-- templates defined in address.xsl for setting standard fields -->
<xsl:variable name="AdminDivision">
<xsl:call-template name="AdminDivision"/>
</xsl:variable>
<xsl:variable name="CityDivision">
<xsl:call-template name="CityDivision"/>
</xsl:variable>
<xsl:variable name="PostCode">
<xsl:call-template name="PostCode"/>
</xsl:variable>
<xsl:value-of select="street"/>
<br/>
<xsl:if test="street2">
<xsl:value-of select="street2"/>
<br/>
</xsl:if>
<xsl:if test="string-length($CityDivision) &gt; 0">
<xsl:value-of select="$CityDivision"/>
<br/>
</xsl:if>
<xsl:if test="string-length($PostCode) &gt; 0">
<xsl:value-of select="$PostCode"/>
<xsl:text/>
</xsl:if>
<xsl:value-of select="city"/>
<xsl:if test="string-length($AdminDivision) &gt; 0">
<br/>
<xsl:value-of select="$AdminDivision"/>
</xsl:if>
<xsl:if test="country">
<br/>
<xsl:value-of select="country"/>
</xsl:if>
</xsl:template>
<xsl:template match="address" mode="italian">
<xsl:value-of select="street"/>
<br/>
<xsl:if test="street2">
<xsl:value-of select="street2"/>
<br/>
</xsl:if>
<xsl:if test="postalCode">
<xsl:value-of select="postalCode"/>
<xsl:text/>
</xsl:if>
<xsl:value-of select="city"/>
<xsl:if test="province">
<xsl:text> (</xsl:text>
<xsl:value-of select="province"/>
<xsl:text>)</xsl:text>
</xsl:if>
<xsl:if test="country">
<br/>
<xsl:value-of select="country"/>
</xsl:if>
</xsl:template>
<!-- Preserve line breaks within a free format address -->
<xsl:template match="address//text()">
<xsl:call-template name="PreserveLinebreaks">
<xsl:with-param name="Text" select="."/>
</xsl:call-template>
</xsl:template>
<xsl:template name="PreserveLinebreaks">
<xsl:param name="Text"/>
<xsl:choose>
<xsl:when test="contains($Text, '&#xA;')">
<xsl:value-of select="substring-before($Text, '&#xA;')"/>
<br/>
<xsl:call-template name="PreserveLinebreaks">
<xsl:with-param name="Text" select="substring-after($Text, '&#xA;')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$Text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Objective, with "professional" formatting. -->
<xsl:template match="objective">
<table class="MsoNormalTable">
<tr>
<td class="SectionDescriptor">
<p class="SectionTitle">
<xsl:value-of select="$objective.word"/>
</p>
</td>
<td class="SectionContent">
<p class="Summary">
<xsl:apply-templates/>
</p>
</td>
</tr>
</table>
</xsl:template>
<!-- History, with "professional" formatting. -->
<xsl:template match="history">
<table class="MsoNormalTable">
<tr>
<td class="SectionDescriptor">
<p class="SectionTitle">
<xsl:value-of select="$history.word"/>
</p>
</td>
<td class="SectionContent">
<p class="Summary">
<xsl:apply-templates select="job"/>
</p>
</td>
</tr>
</table>
</xsl:template>
<!-- Academics, with "professional" formatting. -->
<xsl:template match="academics">
<table class="MsoNormalTable" >
<tr>
<td class="SectionDescriptor" >
<p class="SectionTitle">
<xsl:value-of select="$academics.word"/>
</p>
</td>
<td class="SectionContent">
<p class="Summary">
<xsl:apply-templates select="degrees"/>
<xsl:apply-templates select="note"/>
</p>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="degrees">
<p class="degrees">
<xsl:apply-templates select="degree"/>
</p>
<xsl:apply-templates select="note"/>
</xsl:template>
<xsl:template match="note">
<div class="note">
<xsl:apply-templates/>
</div>
</xsl:template>
<xsl:template match="degree">
<div class="degree">
<xsl:if test="date">
<xsl:apply-templates select="date/month"/>
<xsl:text> </xsl:text>
<xsl:apply-templates select="date/year"/>
<xsl:text> </xsl:text>
</xsl:if>
<div class="institution">
<xsl:value-of select="institution"/>
<xsl:text> </xsl:text>
</div>
<br/>
<span class="skill" style="font-family:Wingdings; mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings">
§
<span style='font:8.0pt "Arial"'>
<acronym class="level">
<xsl:value-of select="level"/>
</acronym>
<xsl:text> </xsl:text>
<xsl:value-of select="$in.word"/>
<xsl:text> </xsl:text>
<xsl:value-of select="major"/>
<xsl:text> </xsl:text>
<xsl:if test="subjects/subject">
<xsl:apply-templates select="subjects"/>
</xsl:if>
</span>
</span>
<br/>
<span class="skill" style="font-family:Wingdings; mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings">
§
<span style='font:8.0pt "Arial"'>
<xsl:if test="annotation">
<xsl:apply-templates select="annotation"/>
</xsl:if>
</span>
</span>
</div>
</xsl:template>
<!-- Format the subjects -->
<xsl:template match="subjects">
<table>
<xsl:for-each select="subject">
<tr>
<td />
<td>
<xsl:value-of select="title"/>
</td>
<td width="10"/>
<td>
<xsl:value-of select="result"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
<!-- Format each job -->
<xsl:template match="job">
<xsl:apply-templates select="period"/>
<div class="employer">
<xsl:value-of select="employer"/>
</div>
<xsl:if test="city">
<div class="citystate">
<xsl:apply-templates select="citystate"/>
</div>
</xsl:if>
<div class="jobtitle">
<xsl:value-of select="jobtitle"/>
</div>
<xsl:apply-templates select="description"/>
<xsl:if test="projects/project">
<xsl:value-of select="$projects.word"/>
<xsl:apply-templates select="projects"/>
</xsl:if>
<xsl:if test="achievements/achievement">
<xsl:apply-templates select="achievements"/>
</xsl:if>
</xsl:template>
<!-- Format the projects section as a bullet list -->
<xsl:template match="projects">
<ul>
<xsl:for-each select="project">
<li class="skill" style="font-family:Wingdings; mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings">
<xsl:apply-templates/>
</li>
</xsl:for-each>
</ul>
</xsl:template>
<xsl:template match="period">
<div class="date">
<xsl:apply-templates select="from"/> - <xsl:apply-templates select="to"/>
</div>
</xsl:template>
<xsl:template match="date">
<xsl:value-of select="month"/>
<xsl:text> </xsl:text>
<xsl:value-of select="year"/>
</xsl:template>
<xsl:template match="present">
<xsl:value-of select="$present.word"/>
</xsl:template>
<!-- Format the achievements with "professional" style -->
<xsl:template match="achievements">
<xsl:for-each select="achievement">
<span class="skill" style="font-family:Wingdings; mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings">
§
<span style='font:8.0pt "Arial"'>
<xsl:apply-templates/>
<br/>
</span>
</span>
</xsl:for-each>
<p/>
</xsl:template>
<!-- Format the open-ended skills -->
<xsl:template match="skillareas">
<xsl:apply-templates select="skillarea"/>
</xsl:template>
<xsl:template match="skillarea">
<h2 class="skillareaHeading">
<xsl:value-of select="title"/>
</h2>
<xsl:apply-templates select="skillset"/>
</xsl:template>
<xsl:template match="skillset">
<xsl:choose>
<xsl:when test="$skills.format = 'comma'">
<p>
<xsl:apply-templates select="title" mode="comma"/>
<xsl:apply-templates select="skills" mode="comma"/>
</p>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="title" mode="bullet"/>
<xsl:apply-templates select="skills" mode="bullet"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="skillset/title" mode="comma">
<span class="skillsetTitle">
<xsl:value-of select="."/>
<xsl:text>: </xsl:text>
</span>
</xsl:template>
<xsl:template match="skillset/title" mode="bullet">
<h3 class="skillsetTitle">
<xsl:value-of select="."/>
</h3>
</xsl:template>
<!-- format as a comma-separated list -->
<xsl:template match="skills" mode="comma">
<span class="skills">
<xsl:for-each select="skill[position() != last()]">
<xsl:apply-templates/>
<xsl:text>, </xsl:text>
</xsl:for-each>
<xsl:apply-templates select="skill[position() = last()]"/>
</span>
</xsl:template>
<!-- format as a bullet list -->
<xsl:template match="skills" mode="bullet">
<ul class="skills">
<xsl:for-each select="skill">
<li class="skill" style="font-family:Wingdings; mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings">
<xsl:apply-templates/>
</li>
</xsl:for-each>
</ul>
</xsl:template>
<!-- Format publications -->
<xsl:template match="pubs">
<h2 class="pubsHeading">
<xsl:value-of select="$publications.word"/>
</h2>
<ul class="pubs">
<xsl:apply-templates select="pub"/>
</ul>
</xsl:template>
<!-- Format a single publication -->
<xsl:template match="pub">
<li class="pub">
<xsl:call-template name="formatPub"/>
</li>
</xsl:template>
<!-- Format the misc info -->
<xsl:template match="misc">
<h2 class="miscHeading">
<xsl:value-of select="$miscellany.word"/>
</h2>
<xsl:apply-templates/>
</xsl:template>
<!-- Format the legalese -->
<xsl:template match="copyright">
<address class="copyright">
<p>
<xsl:value-of select="$copyright.word"/>
<xsl:text> </xsl:text>
<xsl:value-of select="year"/>
<xsl:text> </xsl:text>
<xsl:value-of select="$by.word"/>
<xsl:text> </xsl:text>
<xsl:if test="name">
<xsl:apply-templates select="name"/>
</xsl:if>
<xsl:if test="not(name)">
<xsl:apply-templates select="/resume/header/name"/>
</xsl:if>
<xsl:text>. This document uses </xsl:text>
<a>
<xsl:attribute name="href">http://xmlresume.sourceforge.net</xsl:attribute>
XMLResume</a>
<xsl:value-of select="legalnotice"/>
</p>
</address>
</xsl:template>
<!-- Put a space between first and last name -->
<xsl:template match="name">
<xsl:value-of select="firstname"/>
<xsl:text> </xsl:text>
<xsl:if test="middlenames">
<xsl:value-of select="middlenames"/>
<xsl:text> </xsl:text>
</xsl:if>
<xsl:value-of select="surname"/>
<xsl:if test="suffix">
<xsl:text> </xsl:text>
<xsl:value-of select="suffix"/>
</xsl:if>
</xsl:template>
<!-- para -> p -->
<xsl:template match="para">
<p class="para">
<xsl:apply-templates/>
</p>
</xsl:template>
<!-- emphasis -> strong -->
<xsl:template match="emphasis">
<strong class="emphasis">
<xsl:value-of select="."/>
</strong>
</xsl:template>
<!-- url -> monospace along with href -->
<xsl:template match="url">
<a class="urlA">
<xsl:attribute name="href"><xsl:value-of select="."/></xsl:attribute>
<xsl:value-of select="."/>
</a>
</xsl:template>
<!-- citation -> cite -->
<xsl:template match="citation">
<cite class="citation">
<xsl:value-of select="."/>
</cite>
</xsl:template>
<!-- Format the referees -->
<xsl:template match="referees">
<h2 class="refereesHeading">
<xsl:value-of select="$referees.word"/>
</h2>
<xsl:apply-templates select="referee"/>
</xsl:template>
<xsl:template match="referee">
<h3 class="refereeHeading">
<xsl:apply-templates select="name"/>
</h3>
<p>
<xsl:apply-templates select="address"/>
<br/>
<!-- Don't print the label if the field value is empty *SE* -->
<xsl:if test="contact/phone">
<xsl:value-of select="$phone.word"/>: <xsl:value-of select="contact/phone"/>
<br/>
</xsl:if>
<xsl:if test="contact/email">
<xsl:value-of select="$email.word"/>: <a>
<xsl:attribute name="href"><xsl:text>mailto:</xsl:text><xsl:value-of select="contact/email"/></xsl:attribute>
<xsl:value-of select="contact/email"/>
</a>
<br/>
</xsl:if>
<xsl:if test="contact/url">
<xsl:value-of select="$url.word"/>: <a>
<xsl:attribute name="href"><xsl:value-of select="contact/url"/></xsl:attribute>
<xsl:value-of select="contact/url"/>
</a>
</xsl:if>
</p>
</xsl:template>
<!-- Wrap a description up in a div -->
<xsl:template match="description">
<div class="description">
<xsl:apply-templates/>
</div>
</xsl:template>
<!-- Memberships, with "professional" formatting. -->
<xsl:template match="memberships">
<table class="MsoNormalTable">
<tr>
<td class="SectionDescriptor" >
<p class="SectionTitle" style="margin-top: 0in">
<xsl:apply-templates select="title"/>
</p>
</td>
<td class="SectionContent">
<p class="Summary">
<xsl:apply-templates select="membership"/>
</p>
</td>
</tr>
</table>
</xsl:template>
<!-- A single membership. -->
<xsl:template match="membership">
<xsl:if test="title">
<span class="membershipTitle">
<xsl:value-of select="title"/>
</span>
<br/>
</xsl:if>
<xsl:if test="organization">
<span class="organization">
<xsl:value-of select="organization"/>
</span>
<br/>
</xsl:if>
<xsl:if test="period">
<xsl:apply-templates select="period"/>
<br/>
</xsl:if>
<xsl:apply-templates select="description"/>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
normalize-whitespace.xsl
Normalize whitespace in an XML resume. (First pass of two-pass processing.)
Copyright (c) 2000-2002 Bruce Christensen
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the
distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
$Id: normalize-whitespace.xsl,v 1.1 2002/06/24 21:50:14 bruckie Exp $
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="../lib/string.xsl"/>
<xsl:output method="xml" omit-xml-declaration="no" indent="no"
encoding="UTF-8"/>
<xsl:strip-space elements="*"/>
<!-- Copy everything by default -->
<xsl:template match="node()|@*">
<xsl:message>Element <xsl:value-of select="local-name()"/></xsl:message>
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<!-- Do special processing for text nodes (normalize whitespace) -->
<xsl:template match="//text()">
<xsl:message>Text: '<xsl:value-of select="."/>'</xsl:message>
<!-- Output leading space (if necessary) -->
<xsl:if test="preceding-sibling::node()[self::* or self::text()]">
<xsl:variable name="LeadingWS">
<xsl:call-template name="LeadingSpace">
<xsl:with-param name="Text">
<xsl:value-of select="."/>
</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:if test="string-length($LeadingWS)">
<xsl:text> </xsl:text>
<xsl:message> Preceding sibling: '<xsl:value-of select="preceding-sibling::node()[self::* or self::text()][1]"/>'</xsl:message>
<xsl:message> Output leading space</xsl:message>
</xsl:if>
</xsl:if>
<!-- Output content -->
<xsl:value-of select="normalize-space(.)"/>
<xsl:message> Content: '<xsl:value-of select="normalize-space(.)"/>'</xsl:message>
<!-- Output trailing space (if necessary) -->
<xsl:if test="following-sibling::node()[self::* or self::text()][1]">
<xsl:variable name="TrailingWS">
<xsl:call-template name="TrailingSpace">
<xsl:with-param name="Text">
<xsl:value-of select="."/>
</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:if test="string-length($TrailingWS)">
<xsl:text> </xsl:text>
<xsl:message> Following sibling: '<xsl:value-of select="following-sibling::node()[self::* or self::text()][1]"/>'</xsl:message>
<xsl:message> Output trailing space</xsl:message>
</xsl:if>
</xsl:if>
<xsl:message> Preceding siblings:</xsl:message>
<xsl:for-each select="preceding-sibling::node()[self::* or self::text()]">
<xsl:message> #<xsl:value-of select="position()"/>/<xsl:value-of select="last()"/>: '<xsl:value-of select="."/>'</xsl:message>
<xsl:choose>
<xsl:when test="self::text()">
<xsl:message> (Text)</xsl:message>
</xsl:when>
<xsl:when test="self::*">
<xsl:message> (Element)</xsl:message>
</xsl:when>
<xsl:otherwise>
<xsl:message> (Unknown node type)</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:message> Following siblings:</xsl:message>
<xsl:for-each select="following-sibling::node()[self::* or self::text()]">
<xsl:message> #<xsl:value-of select="position()"/>/<xsl:value-of select="last()"/>: '<xsl:value-of select="."/>'</xsl:message>
<xsl:choose>
<xsl:when test="self::text()">
<xsl:message> (Text)</xsl:message>
</xsl:when>
<xsl:when test="self::*">
<xsl:message> (Element)</xsl:message>
</xsl:when>
<xsl:otherwise>
<xsl:message> (Unknown node type)</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>