1143 lines
38 KiB
XML
1143 lines
38 KiB
XML
|
<?xml version="1.0" encoding="UTF-8"?>
|
||
|
|
||
|
<!--
|
||
|
fo.xsl
|
||
|
Transform XML resume into XSL-FO, for formatting into PDF.
|
||
|
|
||
|
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.
|
||
|
|
||
|
$Id: fo.xsl,v 1.15 2002/11/10 20:48:58 brandondoyle Exp $
|
||
|
-->
|
||
|
|
||
|
<xsl:stylesheet version="1.0"
|
||
|
xmlns:r="http://xmlresume.sourceforge.net/resume/0.0"
|
||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||
|
xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||
|
|
||
|
<xsl:output method="xml" omit-xml-declaration="no" indent="yes"
|
||
|
encoding="UTF-8"/>
|
||
|
<xsl:strip-space elements="*"/>
|
||
|
|
||
|
<xsl:include href="../params.xsl"/>
|
||
|
<xsl:include href="../lib/common.xsl"/>
|
||
|
<xsl:include href="../lib/string.xsl"/>
|
||
|
|
||
|
<!-- Format the document. -->
|
||
|
<xsl:template match="/">
|
||
|
<fo:root>
|
||
|
<fo:layout-master-set>
|
||
|
<fo:simple-page-master master-name="resume-page"
|
||
|
margin-top="{$margin.top}"
|
||
|
margin-left="{$margin.left}"
|
||
|
margin-right="{$margin.right}"
|
||
|
margin-bottom="0in"
|
||
|
page-height="{$page.height}"
|
||
|
page-width="{$page.width}">
|
||
|
<!-- FIXME: should be error-if-overflow, but fop0.20.3 doesn't support it -->
|
||
|
<fo:region-body overflow="hidden"
|
||
|
margin-bottom="{$margin.bottom}"/>
|
||
|
<!-- FIXME: should be error-if-overflow, but fop0.20.3 doesn't support it -->
|
||
|
<fo:region-after overflow="hidden"
|
||
|
extent="{$margin.bottom}"/>
|
||
|
</fo:simple-page-master>
|
||
|
</fo:layout-master-set>
|
||
|
<fo:page-sequence master-reference="resume-page">
|
||
|
<!-- Running footer with person's name and page number. -->
|
||
|
<fo:static-content flow-name="xsl-region-after">
|
||
|
<fo:block text-align="start" font-size="{$footer.font.size}"
|
||
|
font-family="{$footer.font.family}">
|
||
|
<xsl:apply-templates select="r:resume/r:header/r:name"/>
|
||
|
<xsl:text> - </xsl:text>
|
||
|
<xsl:value-of select="$resume.word"/>
|
||
|
<xsl:text> - </xsl:text>
|
||
|
<xsl:value-of select="$page.word"/>
|
||
|
<xsl:text> </xsl:text>
|
||
|
<fo:page-number/>
|
||
|
</fo:block>
|
||
|
</fo:static-content>
|
||
|
|
||
|
<fo:flow flow-name="xsl-region-body">
|
||
|
<!-- Main text is indented from start side. -->
|
||
|
<fo:block start-indent="{$body.indent}"
|
||
|
font-family="{$body.font.family}"
|
||
|
font-size="{$body.font.size}">
|
||
|
<xsl:apply-templates select="r:resume"/>
|
||
|
</fo:block>
|
||
|
</fo:flow>
|
||
|
</fo:page-sequence>
|
||
|
</fo:root>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Callable template to format a heading: -->
|
||
|
<!--
|
||
|
Call "heading" with parameter "text" being the text of the heading.
|
||
|
GH: As heading.indent is less than body.indent, this is a hanging
|
||
|
indent of the heading.
|
||
|
-->
|
||
|
<xsl:template name="heading">
|
||
|
<xsl:param name="text">Heading Not Defined</xsl:param>
|
||
|
<fo:block
|
||
|
start-indent="{$heading.indent}"
|
||
|
font-size="{$heading.font.size}"
|
||
|
font-family="{$heading.font.family}"
|
||
|
font-weight="{$heading.font.weight}"
|
||
|
space-before="{$para.break.space}"
|
||
|
space-after="{$para.break.space}"
|
||
|
border-bottom-style="{$heading.border.bottom.style}"
|
||
|
border-bottom-width="{$heading.border.bottom.width}"
|
||
|
keep-with-next="always">
|
||
|
<xsl:value-of select="$text"/>
|
||
|
</fo:block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Header information -->
|
||
|
<xsl:template match="r:header" mode="standard">
|
||
|
<fo:block space-after="{$para.break.space}">
|
||
|
<fo:block
|
||
|
font-style="{$header.name.font.style}"
|
||
|
font-weight="{$header.name.font.weight}"
|
||
|
font-size="{$header.name.font.size}">
|
||
|
<xsl:apply-templates select="r:name"/>
|
||
|
</fo:block>
|
||
|
<xsl:apply-templates select="r:address"/>
|
||
|
<fo:block space-before="{$half.space}">
|
||
|
<xsl:apply-templates select="r:contact"/>
|
||
|
</fo:block>
|
||
|
</fo:block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="r:header" mode="centered">
|
||
|
<fo:block
|
||
|
space-after="{$para.break.space}"
|
||
|
start-indent="{$header.margin-left}"
|
||
|
end-indent="{$header.margin-right}">
|
||
|
<fo:leader leader-length="100%" leader-pattern="{$header.line.pattern}"
|
||
|
rule-thickness="{$header.line.thickness}"/>
|
||
|
<fo:block
|
||
|
font-style="{$header.name.font.style}"
|
||
|
font-weight="{$header.name.font.weight}"
|
||
|
font-size="{$header.name.font.size}">
|
||
|
<xsl:apply-templates select="r:name"/>
|
||
|
</fo:block>
|
||
|
<xsl:apply-templates select="r:address"/>
|
||
|
<fo:block space-before="{$half.space}">
|
||
|
<xsl:apply-templates select="r:contact"/>
|
||
|
</fo:block>
|
||
|
<fo:leader leader-length="100%" leader-pattern="{$header.line.pattern}"
|
||
|
rule-thickness="{$header.line.thickness}"/>
|
||
|
</fo:block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="r:address" mode="free-form">
|
||
|
<fo:block>
|
||
|
<xsl:apply-templates/>
|
||
|
</fo:block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="r: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>
|
||
|
|
||
|
<fo:block>
|
||
|
<xsl:for-each select="r:street">
|
||
|
<fo:block><xsl:apply-templates/></fo:block>
|
||
|
</xsl:for-each>
|
||
|
<xsl:if test="r:street2">
|
||
|
<fo:block><xsl:apply-templates select="r:street2"/></fo:block>
|
||
|
</xsl:if>
|
||
|
<xsl:if test="string-length($CityDivision) > 0">
|
||
|
<fo:block><xsl:value-of select="$CityDivision"/></fo:block>
|
||
|
</xsl:if>
|
||
|
<fo:block>
|
||
|
<xsl:apply-templates select="r:city"/>
|
||
|
<xsl:if test="string-length($AdminDivision) > 0">
|
||
|
<xsl:text>, </xsl:text><xsl:value-of select="$AdminDivision"/>
|
||
|
</xsl:if>
|
||
|
<xsl:if test="string-length($PostCode) > 0">
|
||
|
<xsl:text> </xsl:text><xsl:value-of select="$PostCode"/>
|
||
|
</xsl:if>
|
||
|
</fo:block>
|
||
|
<xsl:if test="r:country">
|
||
|
<fo:block>
|
||
|
<xsl:apply-templates select="r:country"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
</fo:block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="r: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>
|
||
|
|
||
|
<fo:block>
|
||
|
<xsl:for-each select="r:street">
|
||
|
<fo:block><xsl:apply-templates/></fo:block>
|
||
|
</xsl:for-each>
|
||
|
<xsl:if test="r:street2">
|
||
|
<fo:block><xsl:apply-templates select="r:street2"/></fo:block>
|
||
|
</xsl:if>
|
||
|
<xsl:if test="string-length($CityDivision) > 0">
|
||
|
<fo:block><xsl:value-of select="$CityDivision"/></fo:block>
|
||
|
</xsl:if>
|
||
|
<fo:block>
|
||
|
<xsl:if test="string-length($PostCode) > 0">
|
||
|
<xsl:value-of select="$PostCode"/><xsl:text> </xsl:text>
|
||
|
</xsl:if>
|
||
|
</fo:block><fo:block>
|
||
|
<xsl:apply-templates select="r:city"/>
|
||
|
</fo:block>
|
||
|
<xsl:if test="string-length($AdminDivision) > 0">
|
||
|
<fo:block>
|
||
|
<xsl:value-of select="$AdminDivision"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
<xsl:if test="r:country">
|
||
|
<fo:block>
|
||
|
<xsl:apply-templates select="r:country"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
</fo:block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="r:address" mode="italian">
|
||
|
|
||
|
<fo:block>
|
||
|
<xsl:for-each select="r:street">
|
||
|
<fo:block><xsl:apply-templates/></fo:block>
|
||
|
</xsl:for-each>
|
||
|
<xsl:if test="r:street2">
|
||
|
<fo:block><xsl:apply-templates select="r:street2"/></fo:block>
|
||
|
</xsl:if>
|
||
|
<fo:block>
|
||
|
<xsl:if test="r:postalCode">
|
||
|
<xsl:apply-templates select="r:postalCode"/><xsl:text> </xsl:text>
|
||
|
</xsl:if>
|
||
|
<xsl:apply-templates select="r:city"/>
|
||
|
<xsl:if test="r:province">
|
||
|
<xsl:text> (</xsl:text><xsl:apply-templates select="r:province"/>
|
||
|
<xsl:text>)</xsl:text>
|
||
|
</xsl:if>
|
||
|
</fo:block>
|
||
|
<xsl:if test="r:country">
|
||
|
<fo:block>
|
||
|
<xsl:apply-templates select="r:country"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
</fo:block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Preserve line breaks within a free format address -->
|
||
|
<xsl:template match="r:address//text()">
|
||
|
<xsl:call-template name="String-Replace">
|
||
|
<xsl:with-param name="Text" select="."/>
|
||
|
<xsl:with-param name="Search-For">
|
||
|
<xsl:text>
</xsl:text>
|
||
|
</xsl:with-param>
|
||
|
<xsl:with-param name="Replace-With">
|
||
|
<fo:block/>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
|
||
|
|
||
|
<!-- Named template to format a single contact field *SE* -->
|
||
|
<!-- Don't print the label if the field value is empty *SE* -->
|
||
|
<xsl:template name="contact">
|
||
|
<xsl:param name="label"/>
|
||
|
<xsl:param name="field"/>
|
||
|
<xsl:if test="string-length($field) > 0">
|
||
|
<fo:block>
|
||
|
<fo:inline font-style="{$header.item.font.style}"><xsl:value-of select="$label"/>:</fo:inline>
|
||
|
<xsl:text> </xsl:text>
|
||
|
<xsl:value-of select="$field"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format contact information. -->
|
||
|
|
||
|
<xsl:template match="r:contact/r:phone">
|
||
|
<xsl:call-template name="contact">
|
||
|
<xsl:with-param name="label">
|
||
|
<xsl:call-template name="PhoneLocation">
|
||
|
<xsl:with-param name="Location" select="@location"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:with-param>
|
||
|
<xsl:with-param name="field">
|
||
|
<xsl:apply-templates/>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="r:contact/r:fax">
|
||
|
<xsl:call-template name="contact">
|
||
|
<xsl:with-param name="label">
|
||
|
<xsl:call-template name="FaxLocation">
|
||
|
<xsl:with-param name="Location" select="@location"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:with-param>
|
||
|
<xsl:with-param name="field">
|
||
|
<xsl:apply-templates/>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="r:contact/r:pager">
|
||
|
<xsl:call-template name="contact">
|
||
|
<xsl:with-param name="label">
|
||
|
<xsl:value-of select="$pager.word"/>
|
||
|
</xsl:with-param>
|
||
|
<xsl:with-param name="field">
|
||
|
<xsl:apply-templates/>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="r:contact/r:email">
|
||
|
<xsl:call-template name="contact">
|
||
|
<xsl:with-param name="label">
|
||
|
<xsl:value-of select="$email.word"/>
|
||
|
</xsl:with-param>
|
||
|
<xsl:with-param name="field">
|
||
|
<xsl:apply-templates/>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="r:contact/r:url">
|
||
|
<xsl:call-template name="contact">
|
||
|
<xsl:with-param name="label">
|
||
|
<xsl:value-of select="$url.word"/>
|
||
|
</xsl:with-param>
|
||
|
<xsl:with-param name="field">
|
||
|
<xsl:apply-templates/>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="r:contact/r:instantMessage">
|
||
|
<xsl:call-template name="contact">
|
||
|
<xsl:with-param name="label">
|
||
|
<xsl:call-template name="IMServiceName">
|
||
|
<xsl:with-param name="Service" select="@service"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:with-param>
|
||
|
<xsl:with-param name="field">
|
||
|
<xsl:apply-templates/>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format the objective with the heading "Professional Objective." -->
|
||
|
<xsl:template match="r:objective">
|
||
|
<xsl:call-template name="heading">
|
||
|
<xsl:with-param name="text"><xsl:value-of select="$objective.word"/></xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
<xsl:apply-templates/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format the history with the heading "Employment History". -->
|
||
|
<xsl:template match="r:history">
|
||
|
<xsl:call-template name="heading">
|
||
|
<xsl:with-param name="text"><xsl:value-of select="$history.word"/></xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
<xsl:apply-templates/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="r:location">
|
||
|
<xsl:value-of select="$location.start"/>
|
||
|
<xsl:apply-templates/>
|
||
|
<xsl:value-of select="$location.end"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a single job. -->
|
||
|
<xsl:template match="r:job">
|
||
|
<fo:block>
|
||
|
<fo:block space-after="{$half.space}" keep-with-next="always">
|
||
|
<fo:block
|
||
|
keep-with-next="always"
|
||
|
font-style="{$jobtitle.font.style}"
|
||
|
font-weight="{$jobtitle.font.weight}">
|
||
|
<xsl:apply-templates select="r:jobtitle"/>
|
||
|
</fo:block>
|
||
|
<fo:block keep-with-next="always">
|
||
|
<fo:inline
|
||
|
font-style="{$employer.font.style}"
|
||
|
font-weight="{$employer.font.weight}">
|
||
|
<xsl:apply-templates select="r:employer"/>
|
||
|
</fo:inline>
|
||
|
<xsl:apply-templates select="r:location"/>
|
||
|
</fo:block>
|
||
|
<fo:block
|
||
|
font-style="{$job-period.font.style}"
|
||
|
font-weight="{$job-period.font.weight}">
|
||
|
<xsl:apply-templates select="r:date|r:period"/>
|
||
|
</fo:block>
|
||
|
</fo:block>
|
||
|
<xsl:if test="r:description">
|
||
|
<fo:block
|
||
|
provisional-distance-between-starts="0.5em">
|
||
|
<xsl:apply-templates select="r:description"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
<xsl:if test="r:projects/r:project">
|
||
|
<fo:block>
|
||
|
<fo:block
|
||
|
keep-with-next="always"
|
||
|
font-style="{$job-subheading.font.style}"
|
||
|
font-weight="{$job-subheading.font.weight}">
|
||
|
<xsl:value-of select="$projects.word"/>
|
||
|
</fo:block>
|
||
|
<xsl:apply-templates select="r:projects"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
<xsl:if test="r:achievements/r:achievement">
|
||
|
<fo:block>
|
||
|
<fo:block
|
||
|
keep-with-next="always"
|
||
|
font-style="{$job-subheading.font.style}"
|
||
|
font-weight="{$job-subheading.font.weight}">
|
||
|
<xsl:value-of select="$achievements.word"/>
|
||
|
</fo:block>
|
||
|
<xsl:apply-templates select="r:achievements"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
</fo:block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format the projects section -->
|
||
|
<xsl:template match="r:projects">
|
||
|
<fo:list-block space-after="{$para.break.space}"
|
||
|
provisional-distance-between-starts="{$para.break.space}"
|
||
|
provisional-label-separation="{$bullet.space}">
|
||
|
<xsl:apply-templates select="r:project"/>
|
||
|
</fo:list-block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a single project as a bullet -->
|
||
|
<xsl:template match="r:project">
|
||
|
<xsl:call-template name="bulletListItem">
|
||
|
<xsl:with-param name="text">
|
||
|
<xsl:if test="@title">
|
||
|
<xsl:value-of select="@title"/>
|
||
|
<xsl:value-of select="$title.separator"/>
|
||
|
</xsl:if>
|
||
|
<xsl:apply-templates/>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format the achievements section as a bullet list *SE* -->
|
||
|
<xsl:template match="r:achievements">
|
||
|
<fo:list-block space-after="{$para.break.space}"
|
||
|
provisional-distance-between-starts="{$para.break.space}"
|
||
|
provisional-label-separation="{$bullet.space}">
|
||
|
<xsl:for-each select="r:achievement">
|
||
|
<xsl:call-template name="bulletListItem"/>
|
||
|
</xsl:for-each>
|
||
|
</fo:list-block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format academics -->
|
||
|
<xsl:template match="r:academics">
|
||
|
<xsl:call-template name="heading">
|
||
|
<xsl:with-param name="text">
|
||
|
<xsl:value-of select="$academics.word"/>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
<xsl:apply-templates select="r:degrees"/>
|
||
|
<fo:block
|
||
|
font-weight="{$degrees-note.font.weight}"
|
||
|
font-style="{$degrees-note.font.style}">
|
||
|
<xsl:apply-templates select="r:note"/>
|
||
|
</fo:block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a single degree -->
|
||
|
<xsl:template match="r:degree">
|
||
|
<fo:block space-after="{$para.break.space}">
|
||
|
<fo:block keep-with-next="always">
|
||
|
<fo:inline
|
||
|
font-style="{$degree.font.style}"
|
||
|
font-weight="{$degree.font.weight}">
|
||
|
<xsl:apply-templates select="r:level"/>
|
||
|
<xsl:if test="r:major">
|
||
|
<xsl:text> </xsl:text>
|
||
|
<xsl:value-of select="$in.word"/>
|
||
|
<xsl:text> </xsl:text>
|
||
|
<xsl:apply-templates select="r:major"/>
|
||
|
</xsl:if>
|
||
|
</fo:inline>
|
||
|
<xsl:apply-templates select="r:minor"/>
|
||
|
<xsl:if test="r:date|r:period">
|
||
|
<xsl:text>, </xsl:text>
|
||
|
<xsl:apply-templates select="r:date|r:period"/>
|
||
|
</xsl:if>
|
||
|
<xsl:if test="r:annotation">
|
||
|
<xsl:text>. </xsl:text>
|
||
|
<xsl:apply-templates select="r:annotation"/>
|
||
|
</xsl:if>
|
||
|
</fo:block>
|
||
|
<fo:block>
|
||
|
<xsl:apply-templates select="r:institution"/>
|
||
|
<xsl:apply-templates select="r:location"/>
|
||
|
</fo:block>
|
||
|
<xsl:apply-templates select="r:gpa"/>
|
||
|
<xsl:if test="r:subjects/r:subject">
|
||
|
<fo:block space-before="{$half.space}">
|
||
|
<xsl:apply-templates select="r:subjects"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
<xsl:if test="r:projects/r:project">
|
||
|
<fo:block space-before="{$half.space}">
|
||
|
<xsl:apply-templates select="r:projects"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
</fo:block>
|
||
|
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a GPA -->
|
||
|
<xsl:template match="r:gpa">
|
||
|
<fo:block space-before="{$half.space}">
|
||
|
<fo:inline
|
||
|
font-weight="{$gpa-preamble.font.weight}"
|
||
|
font-style="{$gpa-preamble.font.style}">
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="@type = 'major'">
|
||
|
<xsl:value-of select="$major-gpa.word"/>
|
||
|
</xsl:when>
|
||
|
<xsl:otherwise>
|
||
|
<xsl:value-of select="$overall-gpa.word"/>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</fo:inline>
|
||
|
|
||
|
<xsl:text>: </xsl:text>
|
||
|
|
||
|
<xsl:apply-templates select="r:score"/>
|
||
|
|
||
|
<xsl:if test="r:possible">
|
||
|
<xsl:value-of select="$out-of.word"/>
|
||
|
<xsl:apply-templates select="r:possible"/>
|
||
|
</xsl:if>
|
||
|
|
||
|
<xsl:if test="r:note">
|
||
|
<xsl:text>. </xsl:text>
|
||
|
<xsl:apply-templates select="r:note"/>
|
||
|
</xsl:if>
|
||
|
</fo:block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="r:subjects" mode="comma">
|
||
|
<fo:inline font-style="{$job-subheading.font.style}">
|
||
|
<xsl:value-of select="$subjects.word"/>
|
||
|
<xsl:value-of select="$title.separator"/>
|
||
|
</fo:inline>
|
||
|
<xsl:apply-templates select="r:subject" mode="comma"/>
|
||
|
<xsl:value-of select="$subjects.suffix"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="r:subject" mode="comma">
|
||
|
<xsl:apply-templates select="r:title"/>
|
||
|
<xsl:if test="$subjects.result.display = 1">
|
||
|
<xsl:if test="r:result">
|
||
|
<xsl:value-of select="$subjects.result.start"/>
|
||
|
<xsl:value-of select="normalize-space(r:result)"/>
|
||
|
<xsl:value-of select="$subjects.result.end"/>
|
||
|
</xsl:if>
|
||
|
</xsl:if>
|
||
|
<xsl:if test="following-sibling::*">
|
||
|
<xsl:value-of select="$subjects.separator"/>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format the subjects section as a list-block -->
|
||
|
<xsl:template match="r:subjects" mode="table">
|
||
|
<fo:inline font-style="{$job-subheading.font.style}">
|
||
|
<xsl:value-of select="$subjects.word"/>
|
||
|
<xsl:value-of select="$title.separator"/>
|
||
|
</fo:inline>
|
||
|
<fo:list-block
|
||
|
start-indent="1.5in"
|
||
|
provisional-distance-between-starts="150pt"
|
||
|
provisional-label-separation="0.5em"
|
||
|
>
|
||
|
<xsl:for-each select="r:subject">
|
||
|
<fo:list-item>
|
||
|
<fo:list-item-label
|
||
|
end-indent="label-end()"
|
||
|
>
|
||
|
<fo:block>
|
||
|
<xsl:apply-templates select="r:title"/>
|
||
|
</fo:block>
|
||
|
</fo:list-item-label>
|
||
|
<fo:list-item-body
|
||
|
start-indent="body-start()"
|
||
|
>
|
||
|
<fo:block>
|
||
|
<xsl:apply-templates select="r:result"/>
|
||
|
<fo:leader leader-pattern="space" leader-length="2em"/>
|
||
|
</fo:block>
|
||
|
</fo:list-item-body>
|
||
|
</fo:list-item>
|
||
|
</xsl:for-each>
|
||
|
</fo:list-block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="r:skillarea">
|
||
|
<xsl:call-template name="heading">
|
||
|
<xsl:with-param name="text"><xsl:apply-templates select="r:title"/></xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
<xsl:apply-templates select="r:skillset"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a skillset's title (if any) and then the skills underneath it. -->
|
||
|
<xsl:template match="r:skillset">
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="$skills.format = 'comma'">
|
||
|
<fo:block space-after="{$half.space}">
|
||
|
<fo:inline
|
||
|
font-style="{$skillset-title.font.style}"
|
||
|
font-weight="{$skillset-title.font.weight}">
|
||
|
<xsl:apply-templates select="r:title">
|
||
|
<xsl:with-param name="Separator" select="$title.separator"/>
|
||
|
</xsl:apply-templates>
|
||
|
</fo:inline>
|
||
|
<xsl:apply-templates select="r:skill" mode="comma"/>
|
||
|
<!-- The following line should be removed in a future version. -->
|
||
|
<xsl:apply-templates select="r:skills" mode="comma"/>
|
||
|
</fo:block>
|
||
|
</xsl:when>
|
||
|
<xsl:otherwise>
|
||
|
<fo:block
|
||
|
keep-with-next="always"
|
||
|
font-style="{$skillset-title.font.style}"
|
||
|
font-weight="{$skillset-title.font.weight}">
|
||
|
<xsl:apply-templates select="r:title"/>
|
||
|
</fo:block>
|
||
|
<xsl:if test="r:skill">
|
||
|
<fo:list-block space-after="{$para.break.space}"
|
||
|
provisional-distance-between-starts="{$para.break.space}"
|
||
|
provisional-label-separation="{$bullet.space}">
|
||
|
<xsl:apply-templates select="r:skill" mode="bullet"/>
|
||
|
</fo:list-block>
|
||
|
</xsl:if>
|
||
|
|
||
|
<!-- The following block should be removed in a future version. -->
|
||
|
<xsl:if test="r:skills">
|
||
|
<fo:list-block space-after="{$para.break.space}"
|
||
|
provisional-distance-between-starts="{$para.break.space}"
|
||
|
provisional-label-separation="{$bullet.space}">
|
||
|
<xsl:apply-templates select="r:skills" mode="bullet"/>
|
||
|
</fo:list-block>
|
||
|
</xsl:if>
|
||
|
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a single skill as part of a comma-separated list. -->
|
||
|
<xsl:template match="r:skill" mode="comma">
|
||
|
<xsl:apply-templates/>
|
||
|
<xsl:apply-templates select="@level"/>
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="following-sibling::r:skill">
|
||
|
<xsl:text>, </xsl:text>
|
||
|
</xsl:when>
|
||
|
<xsl:otherwise>
|
||
|
<xsl:value-of select="$skills.suffix"/>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a single skill as a bullet item. -->
|
||
|
<xsl:template match="r:skill" mode="bullet">
|
||
|
<xsl:call-template name="bulletListItem">
|
||
|
<xsl:with-param name="text">
|
||
|
<xsl:apply-templates/>
|
||
|
<xsl:apply-templates select="@level"/>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a skill level -->
|
||
|
<xsl:template match="r:skill/@level">
|
||
|
<xsl:if test="$skills.level.display = 1">
|
||
|
<xsl:value-of select="$skills.level.start"/>
|
||
|
<xsl:value-of select="normalize-space(.)"/>
|
||
|
<xsl:value-of select="$skills.level.end"/>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
|
||
|
|
||
|
<!-- Format a single bullet and its text -->
|
||
|
<xsl:template name="bulletListItem">
|
||
|
<xsl:param name="text"/>
|
||
|
<fo:list-item>
|
||
|
<fo:list-item-label start-indent="{$body.indent}"
|
||
|
end-indent="label-end()">
|
||
|
<fo:block><xsl:value-of select="$bullet.glyph"/></fo:block>
|
||
|
</fo:list-item-label>
|
||
|
<fo:list-item-body start-indent="body-start()">
|
||
|
<fo:block>
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="string-length($text) > 0">
|
||
|
<xsl:copy-of select="$text"/>
|
||
|
</xsl:when>
|
||
|
<xsl:otherwise>
|
||
|
<xsl:apply-templates/>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</fo:block>
|
||
|
</fo:list-item-body>
|
||
|
</fo:list-item>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format the publications section. -->
|
||
|
<xsl:template match="r:pubs">
|
||
|
<xsl:call-template name="heading">
|
||
|
<xsl:with-param name="text"><xsl:value-of select="$publications.word"/></xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
<fo:list-block
|
||
|
space-after="{$para.break.space}"
|
||
|
provisional-distance-between-starts="{$para.break.space}"
|
||
|
provisional-label-separation="{$bullet.space}">
|
||
|
<xsl:apply-templates select="r:pub"/>
|
||
|
</fo:list-block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a single publication -->
|
||
|
<xsl:template match="r:pub">
|
||
|
<fo:list-item>
|
||
|
<fo:list-item-label start-indent="{$body.indent}"
|
||
|
end-indent="label-end()">
|
||
|
<fo:block><xsl:value-of select="$bullet.glyph"/></fo:block>
|
||
|
</fo:list-item-label>
|
||
|
<fo:list-item-body start-indent="body-start()">
|
||
|
<fo:block>
|
||
|
<xsl:call-template name="FormatPub"/>
|
||
|
</fo:block>
|
||
|
</fo:list-item-body>
|
||
|
</fo:list-item>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Title of book -->
|
||
|
<xsl:template match="r:bookTitle" priority="1">
|
||
|
<fo:inline font-style="{$citation.font.style}"><xsl:apply-templates/></fo:inline><xsl:value-of select="$pub.item.separator"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format memberships. -->
|
||
|
<xsl:template match="r:memberships">
|
||
|
<xsl:call-template name="heading">
|
||
|
<xsl:with-param name="text"><xsl:apply-templates select="r:title"/></xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
|
||
|
<xsl:apply-templates select="r:membership"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format membership. -->
|
||
|
<xsl:template match="r:membership">
|
||
|
<fo:block space-after="{$half.space}" keep-with-next="always">
|
||
|
<fo:block
|
||
|
font-weight="{$jobtitle.font.weight}"
|
||
|
font-style="{$jobtitle.font.style}">
|
||
|
<xsl:apply-templates select="r:title"/>
|
||
|
</fo:block>
|
||
|
<xsl:if test="r:organization">
|
||
|
<fo:block keep-with-next="always">
|
||
|
<xsl:apply-templates select="r:organization"/>
|
||
|
<xsl:apply-templates select="r:location"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
<xsl:if test="r:date|r:period">
|
||
|
<fo:block keep-with-next="always">
|
||
|
<xsl:apply-templates select="r:date|r:period"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
</fo:block>
|
||
|
<xsl:apply-templates select="r:description"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format interests. -->
|
||
|
<xsl:template match="r:interests">
|
||
|
<!-- Heading -->
|
||
|
<xsl:call-template name="heading">
|
||
|
<xsl:with-param name="text">
|
||
|
<xsl:call-template name="Title">
|
||
|
<xsl:with-param name="Title" select="$interests.word"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
|
||
|
<!-- Interests -->
|
||
|
<fo:list-block
|
||
|
space-after="{$para.break.space}"
|
||
|
provisional-distance-between-starts="{$para.break.space}"
|
||
|
provisional-label-separation="{$bullet.space}">
|
||
|
|
||
|
<xsl:apply-templates select="r:interest"/>
|
||
|
|
||
|
</fo:list-block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- A single interest. -->
|
||
|
<xsl:template match="r:interest">
|
||
|
<xsl:call-template name="bulletListItem">
|
||
|
<xsl:with-param name="text">
|
||
|
|
||
|
<xsl:apply-templates select="r:title"/>
|
||
|
|
||
|
<!-- Append period to title if followed by a single-line description -->
|
||
|
<xsl:if test="$interest.description.format = 'single-line' and r:description">
|
||
|
<xsl:text>. </xsl:text>
|
||
|
</xsl:if>
|
||
|
|
||
|
<xsl:apply-templates select="r:description"/>
|
||
|
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format an interest description -->
|
||
|
<xsl:template match="r:interest/r:description">
|
||
|
<xsl:choose>
|
||
|
|
||
|
<xsl:when test="$interest.description.format = 'single-line'">
|
||
|
<xsl:for-each select="r:para">
|
||
|
<xsl:apply-templates/>
|
||
|
<xsl:if test="following-sibling::*">
|
||
|
<xsl:value-of select="$description.para.separator"/>
|
||
|
</xsl:if>
|
||
|
</xsl:for-each>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:otherwise> <!-- Block -->
|
||
|
<fo:block
|
||
|
space-after="{$para.break.space}"
|
||
|
provisional-distance-between-starts="1em">
|
||
|
<xsl:apply-templates/>
|
||
|
</fo:block>
|
||
|
</xsl:otherwise>
|
||
|
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format security clearance section. -->
|
||
|
<xsl:template match="r:clearances">
|
||
|
<!-- Heading -->
|
||
|
<xsl:call-template name="heading">
|
||
|
<xsl:with-param name="text">
|
||
|
<xsl:call-template name="Title">
|
||
|
<xsl:with-param name="Title" select="$security-clearances.word"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
|
||
|
<!-- Clearances -->
|
||
|
<fo:list-block
|
||
|
space-after="{$para.break.space}"
|
||
|
provisional-distance-between-starts="{$para.break.space}"
|
||
|
provisional-label-separation="{$bullet.space}">
|
||
|
|
||
|
<xsl:apply-templates select="r:clearance"/>
|
||
|
|
||
|
</fo:list-block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a single security clearance. -->
|
||
|
<xsl:template match="r:clearance">
|
||
|
<xsl:call-template name="bulletListItem">
|
||
|
<xsl:with-param name="text">
|
||
|
<fo:inline
|
||
|
font-weight="{$clearance-level.font.weight}"
|
||
|
font-style="{$clearance-level.font.style}">
|
||
|
<xsl:apply-templates select="r:level"/>
|
||
|
</fo:inline>
|
||
|
<xsl:if test="r:organization">
|
||
|
<xsl:text>, </xsl:text>
|
||
|
<xsl:apply-templates select="r:organization"/>
|
||
|
</xsl:if>
|
||
|
<xsl:if test="r:date|r:period">
|
||
|
<xsl:text>, </xsl:text>
|
||
|
<xsl:apply-templates select="r:date|r:period"/>
|
||
|
</xsl:if>
|
||
|
<xsl:if test="r:note">
|
||
|
<xsl:text>. </xsl:text>
|
||
|
<xsl:apply-templates select="r:note"/>
|
||
|
</xsl:if>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format awards. -->
|
||
|
<xsl:template match="r:awards">
|
||
|
<!-- Heading -->
|
||
|
<xsl:call-template name="heading">
|
||
|
<xsl:with-param name="text">
|
||
|
<xsl:call-template name="Title">
|
||
|
<xsl:with-param name="Title" select="$awards.word"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
<fo:list-block
|
||
|
space-after="{$para.break.space}"
|
||
|
provisional-distance-between-starts="{$para.break.space}"
|
||
|
provisional-label-separation="{$bullet.space}">
|
||
|
<xsl:apply-templates select="r:award"/>
|
||
|
</fo:list-block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a single award. -->
|
||
|
<xsl:template match="r:award">
|
||
|
<xsl:call-template name="bulletListItem">
|
||
|
<xsl:with-param name="text">
|
||
|
<fo:inline font-weight="{$emphasis.font.weight}">
|
||
|
<xsl:apply-templates select="r:title"/>
|
||
|
</fo:inline>
|
||
|
<xsl:if test="r:organization"><xsl:text>, </xsl:text></xsl:if>
|
||
|
<xsl:apply-templates select="r:organization"/>
|
||
|
<xsl:if test="r:date|r:period"><xsl:text>, </xsl:text></xsl:if>
|
||
|
<xsl:apply-templates select="r:date|r:period"/>
|
||
|
<xsl:apply-templates select="r:description"/>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format miscellaneous information with "Miscellany" as the heading. -->
|
||
|
<xsl:template match="r:misc">
|
||
|
<xsl:call-template name="heading">
|
||
|
<xsl:with-param name="text"><xsl:value-of select="$miscellany.word"/></xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
<xsl:apply-templates/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format the "last modified" date -->
|
||
|
<xsl:template match="r:lastModified">
|
||
|
<fo:block
|
||
|
start-indent="{$heading.indent}"
|
||
|
space-before="{$para.break.space}"
|
||
|
space-after="{$para.break.space}"
|
||
|
font-size="{$fineprint.font.size}">
|
||
|
<xsl:value-of select="$last-modified.phrase"/>
|
||
|
<xsl:text> </xsl:text>
|
||
|
<xsl:apply-templates/>
|
||
|
<xsl:text>.</xsl:text>
|
||
|
</fo:block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format legalese. -->
|
||
|
<xsl:template match="r:copyright">
|
||
|
<fo:block
|
||
|
start-indent="{$heading.indent}"
|
||
|
font-size="{$fineprint.font.size}">
|
||
|
<fo:block keep-with-next="always">
|
||
|
<xsl:value-of select="$copyright.word"/>
|
||
|
<xsl:text> </xsl:text>
|
||
|
<xsl:apply-templates select="r:year"/>
|
||
|
<xsl:text> </xsl:text>
|
||
|
<xsl:value-of select="$by.word"/>
|
||
|
<xsl:text> </xsl:text>
|
||
|
<xsl:if test="r:name">
|
||
|
<xsl:apply-templates select="r:name"/>
|
||
|
</xsl:if>
|
||
|
<xsl:if test="not(r:name)">
|
||
|
<xsl:apply-templates select="/r:resume/r:header/r:name"/>
|
||
|
</xsl:if>
|
||
|
<xsl:text>. </xsl:text>
|
||
|
</fo:block>
|
||
|
<xsl:apply-templates select="r:legalnotice"/>
|
||
|
</fo:block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format para's as block objects with 10pt space after them. -->
|
||
|
<xsl:template match="r:para">
|
||
|
<fo:block
|
||
|
space-after="{$para.break.space}">
|
||
|
<xsl:apply-templates/>
|
||
|
</fo:block>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format emphasized words in bold. -->
|
||
|
<xsl:template match="r:emphasis">
|
||
|
<fo:inline font-weight="{$emphasis.font.weight}">
|
||
|
<xsl:apply-templates/>
|
||
|
</fo:inline>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format citations to other works. -->
|
||
|
<xsl:template match="r:citation">
|
||
|
<fo:inline font-style="{$citation.font.style}">
|
||
|
<xsl:apply-templates/>
|
||
|
</fo:inline>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a URL. -->
|
||
|
<xsl:template match="r:url" name="FormatUrl">
|
||
|
<fo:inline font-family="{$url.font.family}">
|
||
|
<xsl:apply-templates/>
|
||
|
</fo:inline>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a period. -->
|
||
|
<xsl:template match="r:period">
|
||
|
<xsl:apply-templates select="r:from"/>–<xsl:apply-templates select="r:to"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a date. -->
|
||
|
<xsl:template match="r:date" name="FormatDate">
|
||
|
<xsl:if test="r:dayOfMonth">
|
||
|
<xsl:apply-templates select="r:dayOfMonth"/>
|
||
|
<xsl:text> </xsl:text>
|
||
|
</xsl:if>
|
||
|
<xsl:if test="r:month">
|
||
|
<xsl:apply-templates select="r:month"/>
|
||
|
<xsl:text> </xsl:text>
|
||
|
</xsl:if>
|
||
|
<xsl:apply-templates select="r:year"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- In a date with just "present", format it as the word "present". -->
|
||
|
<xsl:template match="r:present"><xsl:value-of select="$present.word"/></xsl:template>
|
||
|
|
||
|
<!-- Suppress items not needed for print presentation -->
|
||
|
<xsl:template match="r:keywords"/>
|
||
|
|
||
|
<!-- Format the referees -->
|
||
|
<xsl:template match="r:referees">
|
||
|
<xsl:call-template name="heading">
|
||
|
<xsl:with-param name="text"><xsl:value-of select="$referees.word"/></xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="$referees.display = 1">
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="$referees.layout = 'compact'">
|
||
|
<fo:table table-layout="fixed" width="90%">
|
||
|
<fo:table-column width="40%"/>
|
||
|
<fo:table-column width="40%"/>
|
||
|
<fo:table-body>
|
||
|
<xsl:apply-templates select="r:referee" mode="compact"/>
|
||
|
</fo:table-body>
|
||
|
</fo:table>
|
||
|
</xsl:when>
|
||
|
<xsl:otherwise>
|
||
|
<xsl:apply-templates select="r:referee" mode="standard"/>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:when>
|
||
|
<xsl:otherwise>
|
||
|
<fo:block space-after="{$para.break.space}">
|
||
|
<xsl:value-of select="$referees.hidden.phrase"/>
|
||
|
</fo:block>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a referee with the name, title, organiation in the
|
||
|
left column and the address in the right column -->
|
||
|
<xsl:template match="r:referee" mode="compact">
|
||
|
<fo:table-row>
|
||
|
<fo:table-cell padding-bottom="{$half.space}">
|
||
|
<fo:block
|
||
|
font-style="{$referee-name.font.style}"
|
||
|
font-weight="{$referee-name.font.weight}">
|
||
|
<xsl:apply-templates select="r:name"/>
|
||
|
</fo:block>
|
||
|
<fo:block>
|
||
|
<xsl:apply-templates select="r:title"/>
|
||
|
<xsl:if test="r:title and r:organization">
|
||
|
<xsl:text>, </xsl:text>
|
||
|
</xsl:if>
|
||
|
<xsl:apply-templates select="r:organization"/>
|
||
|
</fo:block>
|
||
|
<xsl:if test="r:contact">
|
||
|
<fo:block>
|
||
|
<xsl:apply-templates select="r:contact"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
</fo:table-cell>
|
||
|
<fo:table-cell padding-bottom=".5em">
|
||
|
<xsl:if test="r:address">
|
||
|
<fo:block>
|
||
|
<xsl:apply-templates select="r:address"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
</fo:table-cell>
|
||
|
</fo:table-row>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Format a referee as a block element -->
|
||
|
<xsl:template match="r:referee" mode="standard">
|
||
|
<fo:block space-after="{$para.break.space}">
|
||
|
<fo:block space-after="{$half.space}">
|
||
|
<fo:block keep-with-next="always"
|
||
|
font-style="{$referee-name.font.style}"
|
||
|
font-weight="{$referee-name.font.weight}">
|
||
|
<xsl:apply-templates select="r:name"/>
|
||
|
</fo:block>
|
||
|
<fo:block>
|
||
|
<xsl:apply-templates select="r:title"/>
|
||
|
<xsl:if test="r:title and r:organization">
|
||
|
<xsl:text>, </xsl:text>
|
||
|
</xsl:if>
|
||
|
<xsl:apply-templates select="r:organization"/>
|
||
|
</fo:block>
|
||
|
</fo:block>
|
||
|
<xsl:if test="r:address">
|
||
|
<fo:block space-after="{$half.space}">
|
||
|
<xsl:apply-templates select="r:address"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
<xsl:if test="r:contact">
|
||
|
<fo:block space-after="{$half.space}">
|
||
|
<xsl:apply-templates select="r:contact"/>
|
||
|
</fo:block>
|
||
|
</xsl:if>
|
||
|
</fo:block>
|
||
|
</xsl:template>
|
||
|
|
||
|
</xsl:stylesheet>
|