<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE xsl:stylesheet [
<!ENTITY sp "<xsl:text> </xsl:text>">
<!ENTITY cr "<xsl:text>
</xsl:text>">
]>

<xsl:stylesheet 
    exclude-result-prefixes="r"
    version="2.0" 
    xmlns:r="http://xmlresume.sourceforge.net/resume/0.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:output method="text" encoding="UTF-8" />
   

<!-- word wrap function -->
<xsl:template name="wrapString">
    <xsl:param name="str" />
    <xsl:param name="wrap-col" select="65" />
    <xsl:param name="pos" select="0" />
    <xsl:choose>
        <xsl:when test="contains( $str, ' ' )">
            <xsl:variable name="before" select="substring-before( $str, ' ' )" />
            <xsl:variable name="pos-now" select="$pos + string-length( $before )" />
            <xsl:choose>
                <xsl:when test="$pos = 0" />
                <xsl:when test="floor( $pos div $wrap-col ) != floor( $pos-now div $wrap-col )">&cr;</xsl:when>
                <xsl:otherwise>&sp;</xsl:otherwise>
            </xsl:choose>
            <xsl:value-of select="$before" />
            <xsl:call-template name="wrapString">
                <xsl:with-param name="str" select="substring-after( $str, ' ' )" />
                <xsl:with-param name="pos" select="$pos-now" />
            </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
            <xsl:if test="$pos &gt; 0">&sp;</xsl:if>
            <xsl:value-of select="$str" />
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>


<!-- ==================== -->


<!-- main template -->
<xsl:template match="/r:resume">
<xsl:apply-templates select="r:header" />&cr;&cr;&cr;
<xsl:apply-templates select="r:history" />&cr;
<xsl:apply-templates select="r:skillareas" />&cr;
EFFORT
&cr;
<xsl:apply-templates select="r:academics/r:degrees" />
<xsl:apply-templates select="r:memberships" />
<xsl:apply-templates select="r:awards" />
Resume&cr;
This text was automatically generated via XSLT from an XML file in the XML Resume Library format. 
&cr;&cr;&cr;
</xsl:template>


<!-- ==================== -->

   
<!-- header and contact -->
<xsl:template match="r:header">
<xsl:value-of select="r:name/r:firstname" />&sp;<xsl:value-of select="r:name/r:surname" />&cr;
<xsl:value-of select="/r:resume/r:objective/r:para" />&cr;&cr;
<!-- a --><xsl:for-each select="r:contact/r:url"> 
<xsl:value-of select="." />&cr;
<!-- a --></xsl:for-each>
<xsl:value-of select="r:contact/r:email" />&cr;
<xsl:value-of select="r:contact/r:phone" />&cr;
<xsl:value-of select="r:address/r:city" />, <xsl:value-of select="r:address/r:state" />, <xsl:value-of select="r:address/r:country" />&cr;
Text version last updated: <xsl:value-of select="substring(/r:resume/r:lastModified/r:date/r:month, 1, 3)" /> 
&sp;<xsl:value-of select="/r:resume/r:lastModified/r:date/r:year" /> 
</xsl:template>


<!-- ==================== -->


<!-- history -->
<xsl:template match="r:history">
CAREER
&cr;&cr;
<!-- a --><xsl:for-each select="r:job"> 
<xsl:value-of select="normalize-space(r:employer)" />&cr;
<xsl:value-of select="r:jobtitle" />&cr;
<xsl:value-of select="substring(r:period/r:from/r:date/r:month, 1, 3)" />&sp;
<xsl:value-of select="r:period/r:from/r:date/r:year" /> - <xsl:choose>
<!-- bb -->
<xsl:when test="r:period/r:to/r:present">Present</xsl:when>
<!-- ccc --><xsl:otherwise>
<xsl:value-of select="substring(r:period/r:to/r:date/r:month, 1, 3)" />&sp;
<xsl:value-of select="r:period/r:to/r:date/r:year" />
<!-- ccc --></xsl:otherwise>
<!-- bb --></xsl:choose>
&cr;
<xsl:value-of select="r:location/r:city" />, <xsl:value-of select="r:location/r:state" />&cr;
<xsl:call-template name="wrapString">
    <xsl:with-param name="str" select="normalize-space(r:description/r:para)" />
</xsl:call-template>
&cr;&cr;
<!-- a --></xsl:for-each>
</xsl:template>
  

<!-- ==================== -->


<!-- skills -->
<xsl:template match="r:skillareas">
SKILLS
&cr;
<!-- a --><xsl:for-each select="r:skillarea">
&cr;
<xsl:value-of select="r:title" />&cr;&cr;
<!-- bb --><xsl:for-each select="r:skillset">
<xsl:value-of select="r:title" />:
<xsl:variable name="pureSkills">
<!-- ccc --><xsl:for-each select="r:skill">
<xsl:value-of select="." />
<!-- dddd --><xsl:choose>
<xsl:when test="position() != last()">, </xsl:when>
<xsl:otherwise>
&cr;&cr;
</xsl:otherwise>
<!-- dddd --></xsl:choose>
<!-- ccc --></xsl:for-each>
</xsl:variable>
<xsl:call-template name="wrapString">
    <xsl:with-param name="str" select="$pureSkills" />
</xsl:call-template>
<!-- bb --></xsl:for-each>
<!-- a --></xsl:for-each>
</xsl:template>


<!-- ==================== -->


<!-- school -->
<xsl:template match="r:academics/r:degrees">
School
&cr;
<!-- a --><xsl:for-each select="r:degree">
<xsl:value-of select="r:date/r:year" />&cr;
<xsl:value-of select="r:major" /> (<xsl:value-of select="r:level" />)
<xsl:if test="r:minor">
<xsl:value-of select="r:minor" /> Minor
</xsl:if>
<xsl:value-of select="normalize-space(r:institution)" />&cr;
<xsl:value-of select="r:location/r:city" />, <xsl:value-of select="r:location/r:state" />&cr;&cr;
<!-- a --></xsl:for-each>
</xsl:template>


<!-- ==================== -->


<!-- memberships -->
<xsl:template match="r:memberships">
Groups
&cr;
<!-- a --><xsl:for-each select="r:membership">
<xsl:value-of select="r:date/r:year" />&cr;
<xsl:value-of select="normalize-space(r:organization)" />&cr;
<xsl:value-of select="r:title" />&cr;
<xsl:value-of select="r:description/r:para" />&cr;&cr;
<!-- a --></xsl:for-each>
</xsl:template>


<!-- ==================== -->


<!-- awards -->
<xsl:template match="r:awards">
Awards
&cr;
<!-- a --><xsl:for-each select="r:award">
<xsl:value-of select="r:date/r:year" />&cr;
<xsl:value-of select="r:title" />&cr;
<!-- bb --><xsl:if test="r:description/r:para"> 
<xsl:value-of select="r:description/r:para" />&cr;
<!-- bb --></xsl:if>
<xsl:value-of select="normalize-space(r:organization)" />&cr;&cr;
<!-- a --></xsl:for-each>
</xsl:template>


</xsl:stylesheet>
