<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output index="yes" method="html" encoding="ISO-8859-1"/> <xsl:variable name="bVerbose">0</xsl:variable> <!-- to use call - -param lang '"pt"' --> <xsl:param name="lang">en</xsl:param> <xsl:param name="gui">yes</xsl:param> <xsl:param name="links">yes</xsl:param> <xsl:param name="curyear">2004</xsl:param> <xsl:param name="curmon">5</xsl:param> <xsl:template match="resume"> <html> <head> <title><xsl:value-of select="/resume/map/title/text[@lang=$lang]"/></title> </head> <style id="MyStyles"> .verbose { color: darkblue; display: none; } .not-verbose { } .group-style { padding-left:15; background:lightgrey; } .description-style { margin-left:5pt } .group-ul { display:block; } .show { display:block; } .hide { display:none; } .jobname { font-style: italic; font-weight: bold; } .line { border: solid thin gray; margin: 5px 0px 5px 0px; background-color: gray; } .location { font-style: italic; font-weight: bold; } </style> <body> <script> function ToggleVerbose() { if (document.styleSheets[0].cssRules[0].style.display == "none") { document.styleSheets[0].cssRules[0].style.display = ""; document.styleSheets[0].cssRules[1].style.display = "none"; } else { document.styleSheets[0].cssRules[0].style.display = "none"; document.styleSheets[0].cssRules[1].style.display = ""; } } function Collapse(item) { /* Were like h3 / div / input {HERE} */ var sib = item.parentNode.parentNode.nextSibling.nextSibling; window.status = sib.attributes.getNamedItem("class").nodeValue; if (sib.attributes.getNamedItem("class").nodeValue == "show") { sib.attributes.getNamedItem("class").nodeValue = "hide"; } else { sib.attributes.getNamedItem("class").nodeValue = "show"; } } </script> <center><h1><xsl:value-of select="name" /></h1></center> <xsl:apply-templates select="category[1]"/> </body> </html> </xsl:template> <xsl:template match="category"> <h2 align="center"> <xsl:value-of select="title[@lang=$lang or not(@lang)]"/> </h2> <xsl:if test="$gui = 'yes'"> <input type="checkbox" onclick="ToggleVerbose()"> <xsl:if test="$bVerbose = 1"> <xsl:attribute name="checked">checked</xsl:attribute> </xsl:if> </input> <span class="not-verbose"><xsl:copy-of select="/resume/map/show-long-version/text[@lang=$lang]/child::node()"/></span> <span class="verbose" style="color: black"><xsl:copy-of select="/resume/map/show-short-version/text[@lang=$lang]/child::node()"/></span> </xsl:if> <xsl:apply-templates select="group[@name='Contact Information']"/> <xsl:apply-templates select="group[@name='Professional Experience']"/> <xsl:apply-templates select="group[@name='Education']"/> <xsl:apply-templates select="group[@name='Programming Languages']"/> <xsl:apply-templates select="group[@name='Applications and SDKs']"/> <xsl:apply-templates select="group[@name='Non-Digital Skills']"/> <xsl:apply-templates select="group[@name='Open Source']"/> <xsl:apply-templates select="group[@name='Languages']"/> </xsl:template> <xsl:template match="group"> <xsl:if test="not(@verbose) or @verbose=$gui"> <h3> <xsl:if test="@verbose = 'yes'"> <xsl:attribute name="class">verbose</xsl:attribute> </xsl:if> <div class="group-style"> <xsl:if test="$gui = 'yes'"> <input type="checkbox" checked="true" onClick="Collapse(this)"/><xsl:text> </xsl:text> </xsl:if> <xsl:value-of select="title[@lang=$lang or not(@lang)]"/> </div> </h3> <div class="show"> <xsl:if test="description[@lang=$lang or not(@lang)] != '' "> <div class="description-style"><xsl:value-of select="description[@lang=$lang or not(@lang)]"/></div> </xsl:if> <ul class="group-ul"> <xsl:for-each select="address|institution|skill|employer|item|links"> <!-- If it's verbose, remove it unless gui is on --> <xsl:if test="not(@verbose) or @verbose='no' or $gui = 'yes'"> <xsl:if test="position() != 1"> <!-- I'm using HR here (rather than a DIV) so that when copied to MS Word a line will be put in --> <hr class="line"> <xsl:if test="@verbose = 'yes'"> <xsl:attribute name="class">line verbose</xsl:attribute> </xsl:if> </hr> </xsl:if> <li> <xsl:if test="@verbose = 'yes'"> <xsl:attribute name="class">verbose</xsl:attribute> </xsl:if> <xsl:apply-templates select="."/> </li> </xsl:if> </xsl:for-each> </ul> </div> </xsl:if> </xsl:template> <xsl:template match="institution"> <div> <b><xsl:value-of select="school" /></b> - <xsl:call-template name="from_to_date_str"/><br/> <span class="location"><xsl:value-of select="location[@lang=$lang or not(@lang)]" /></span><br/> <xsl:choose> <xsl:when test="degree"> <xsl:apply-templates select="degree[@lang=$lang or not(@lang)]" /> </xsl:when> <xsl:otherwise> <xsl:copy-of select="/resume/map/did-not-complete/text[@lang=$lang]/child::node()"/> </xsl:otherwise> </xsl:choose> <xsl:if test="major[@lang=$lang or not(@lang)]"> (<xsl:value-of select="major[@lang=$lang or not(@lang)]" />) </xsl:if> <br/> <xsl:if test="comments[@lang=$lang or not(@lang)]"> <xsl:value-of select="comments[@lang=$lang or not(@lang)]"/><br/> </xsl:if> </div> </xsl:template> <xsl:template match="employer"> <b><xsl:value-of select="name[@lang=$lang or not(@lang)]"/></b> - <xsl:call-template name="from_to_date_and_duration_str"/><br/> <span class="location"><xsl:value-of select="location[@lang=$lang or not(@lang)]"/></span><br/> <span class="jobname"><xsl:value-of select="jobName[@lang=$lang or not(@lang)]"/></span> <xsl:for-each select="description"> <xsl:call-template name="description"/> </xsl:for-each> </xsl:template> <xsl:template match="skill"> <b><xsl:value-of select="title[@lang=$lang or not(@lang)]"/></b> <xsl:if test="@years != ''">- <xsl:call-template name="years_str"/></xsl:if><br/> <xsl:apply-templates select="desc[@lang=$lang or not(@lang)]"/> </xsl:template> <xsl:template match="item"> <b><xsl:value-of select="title[@lang=$lang or not(@lang)]"/></b><br/> <xsl:apply-templates select="desc[@lang=$lang or not(@lang)]"/> </xsl:template> <xsl:template match="a"> <xsl:choose> <xsl:when test="$links = 'yes'"><a href="{@href}"><xsl:apply-templates/></a></xsl:when> <xsl:otherwise><xsl:apply-templates/></xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="em"><em><xsl:apply-templates/></em></xsl:template> <xsl:template match="b"><b><xsl:apply-templates/></b></xsl:template> <xsl:template name="description"> <xsl:for-each select="job-item[@lang=$lang or not(@lang)]"> <xsl:if test="not(@verbose) or @verbose = 'no' or $gui = 'yes'"> <span> <xsl:if test="@verbose = 'yes'"> <xsl:attribute name="class">verbose</xsl:attribute> </xsl:if> •<xsl:apply-templates/> <!-- Bullet --> </span> </xsl:if> </xsl:for-each> </xsl:template> <xsl:template match="address"> <xsl:value-of select="@name"/> <div> <xsl:value-of select="street[@lang=$lang or not(@lang)]"/> <xsl:value-of select="city/desc[@lang=$lang or not(@lang)]"/>, <xsl:value-of select="state/@stateCode"/><xsl:text> </xsl:text> <xsl:value-of select="zipcode"/><xsl:text>, </xsl:text> <xsl:value-of select="country/desc[@lang=$lang or not(@lang)]"/><br/> <xsl:apply-templates select="phone" /> </div> </xsl:template> <xsl:template match="links"> <xsl:value-of select="title[@lang=$lang or not(@lang)]"/> <div> <xsl:apply-templates select="link" /> </div> </xsl:template> <xsl:template match="phone"> <b><xsl:value-of select="title[@lang=$lang or not(@lang)]"/>: </b> <xsl:apply-templates select="desc[@lang=$lang or not(@lang)]"/>  </xsl:template> <xsl:template match="years"><xsl:call-template name="years_str"/></xsl:template> <xsl:template match="link"> <xsl:if test="@lang=$lang or not(@lang)"> <b> <xsl:value-of select="title[@lang=$lang or not(@lang)]"/>: </b> <xsl:choose> <xsl:when test="@ref != ''"> <a><xsl:attribute name="href"><xsl:value-of select="@ref"/></xsl:attribute> <xsl:apply-templates select="desc[@lang=$lang or not(@lang)]"/></a>  </xsl:when> <xsl:otherwise> <xsl:apply-templates select="desc[@lang=$lang or not(@lang)]"/>  </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:template> <xsl:template name="from_to_date_str"> <xsl:if test="dateStart[@month='summer' ]"> <xsl:copy-of select="/resume/map/summers-of/text[@lang=$lang]/child::node()"/> </xsl:if> <xsl:for-each select="dateStart"><xsl:call-template name="date-str"/></xsl:for-each> <xsl:copy-of select="/resume/map/to/text[@lang=$lang]/child::node()"/> <xsl:for-each select="dateEnd"><xsl:call-template name="date-str"/></xsl:for-each> </xsl:template> <xsl:template name="from_to_date_and_duration_str"> <xsl:call-template name="from_to_date_str"/> </xsl:template> <xsl:template name="duration_str"> <xsl:variable name="start"> <xsl:for-each select="dateStart"> <xsl:call-template name="extract_months"/> </xsl:for-each> </xsl:variable> <xsl:variable name="end"> <xsl:for-each select="dateEnd"> <xsl:call-template name="extract_months"/> </xsl:for-each> </xsl:variable> </xsl:template> <xsl:template name="extract_months"> <xsl:variable name="month"> <xsl:choose> <xsl:when test="@month = '' ">1</xsl:when> <xsl:when test="@month = 'summer' ">6</xsl:when> <xsl:when test="@year = 'Current' "><xsl:value-of select="$curmon"/></xsl:when> <xsl:otherwise><xsl:value-of select="@month"/></xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="year"> <xsl:choose> <xsl:when test="@year = 'Current' "><xsl:value-of select="$curyear"/></xsl:when> <xsl:otherwise><xsl:value-of select="@year"/></xsl:otherwise> </xsl:choose> </xsl:variable> <!-- return value --> <xsl:value-of select="$year * 12 + $month"/> </xsl:template> <xsl:template name="date-str"> <xsl:variable name="year"><xsl:value-of select="@year"/></xsl:variable> <xsl:variable name="month"> <xsl:choose> <xsl:when test="@month = '1' "><xsl:value-of select="/resume/map/jan/text[@lang=$lang]"/></xsl:when> <xsl:when test="@month = '2' "><xsl:value-of select="/resume/map/feb/text[@lang=$lang]"/></xsl:when> <xsl:when test="@month = '3' "><xsl:value-of select="/resume/map/mar/text[@lang=$lang]"/></xsl:when> <xsl:when test="@month = '4' "><xsl:value-of select="/resume/map/apr/text[@lang=$lang]"/></xsl:when> <xsl:when test="@month = '5' "><xsl:value-of select="/resume/map/may/text[@lang=$lang]"/></xsl:when> <xsl:when test="@month = '6' "><xsl:value-of select="/resume/map/jun/text[@lang=$lang]"/></xsl:when> <xsl:when test="@month = '7' "><xsl:value-of select="/resume/map/jul/text[@lang=$lang]"/></xsl:when> <xsl:when test="@month = '8' "><xsl:value-of select="/resume/map/aug/text[@lang=$lang]"/></xsl:when> <xsl:when test="@month = '9' "><xsl:value-of select="/resume/map/sep/text[@lang=$lang]"/></xsl:when> <xsl:when test="@month = '10'"><xsl:value-of select="/resume/map/oct/text[@lang=$lang]"/></xsl:when> <xsl:when test="@month = '11'"><xsl:value-of select="/resume/map/nov/text[@lang=$lang]"/></xsl:when> <xsl:when test="@month = '12'"><xsl:value-of select="/resume/map/dec/text[@lang=$lang]"/></xsl:when> <xsl:otherwise></xsl:otherwise> </xsl:choose> <xsl:value-of select="/resume/map/de/text[@lang=$lang]"/> </xsl:variable> <xsl:choose> <xsl:when test="$month != '' "><xsl:value-of select="concat($month, ' ', $year)"/></xsl:when> <xsl:otherwise><xsl:value-of select="$year"/></xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="years_str"> <xsl:variable name="years"> <xsl:choose> <xsl:when test="substring(@years, 1, 1) = '+' and string-length(@years) = 5 "> <xsl:value-of select="substring(@years, 2, 4)"/> </xsl:when> <xsl:when test="substring(@years, 1, 1) = '-' and string-length(@years) = 5 "> <xsl:value-of select="substring(@years, 2, 4)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="@years"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="string-length(@years) = 4 or string-length(@years) = 5"> <xsl:choose> <xsl:when test="substring(@years, 1, 1) = '+' "> <xsl:value-of select="/resume/map/more-than/text[@lang=$lang]"/> </xsl:when> <xsl:when test="substring(@years, 1, 1) = '-'"> <xsl:value-of select="/resume/map/less-than/text[@lang=$lang]"/> </xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="$curyear - $years = 1"> <xsl:value-of select="/resume/map/one-year/text[@lang=$lang]"/> </xsl:when> <xsl:otherwise><xsl:value-of select="$curyear - $years"/> <xsl:value-of select="/resume/map/years/text[@lang=$lang]"/> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="$years = 'ongoing' "> <xsl:value-of select="/resume/map/ongoing/text[@lang=$lang]"/> </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="$years = 1"> <xsl:value-of select="/resume/map/one-year/text[@lang=$lang]"/> </xsl:when> <xsl:when test="$years != ''"> <xsl:value-of select="$years"/> <xsl:value-of select="/resume/map/years/text[@lang=$lang]"/> </xsl:when> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>