cv_print.xsl
branchstyles
changeset 0 08de8d15f932
child 5 20b41b986ac6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cv_print.xsl	Tue Dec 27 13:55:27 2005 -0500
@@ -0,0 +1,471 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.1"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns:xt="http://www.jclark.com/xt"
+  extension-element-prefixes="xt" 
+  xmlns="http://www.w3.org/1999/XSL/Format">
+
+<xsl:import href="common.xsl"/>
+<xsl:import href="print.xsl"/>
+
+  <xsl:output method="xml"
+        indent="yes"/>
+
+<xsl:template name="gentext">
+  <xsl:param name="string"/>
+  <xsl:variable name="uri">
+    <xsl:text>cv_str.</xsl:text>
+    <xsl:value-of select="/cv/@lang"/>
+    <xsl:text>.xml</xsl:text>
+  </xsl:variable>
+  <!-- xsl:message>Looking for <xsl:value-of select="$string"/> in <xsl:value-of select="$uri"/>.</xsl:message -->
+  <xsl:value-of select="document($uri)//*[@name=$string]"/>
+</xsl:template>
+
+<xsl:param name="cv-uri"/>
+<xsl:param name="date"/>
+<xsl:attribute-set name="section-title-font" xsl:use-attribute-sets="verylarge-title-font">
+  <xsl:attribute name="font-size">12pt</xsl:attribute>
+  <xsl:attribute name="font-weight">bold</xsl:attribute>
+  <xsl:attribute name="space-after">4pt</xsl:attribute>
+  <xsl:attribute name="text-decoration">underline</xsl:attribute>
+  <xsl:attribute name="score-spaces">true</xsl:attribute>
+  <xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="knowledge-title-font" xsl:use-attribute-sets="large-title-font">
+  <xsl:attribute name="font-size">12pt</xsl:attribute>
+  <xsl:attribute name="font-weight">bold</xsl:attribute>
+  <xsl:attribute name="space-after">4pt</xsl:attribute>
+  <xsl:attribute name="space-before">4pt</xsl:attribute>
+  <xsl:attribute name="font-variant">small-caps</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="work-title-font" xsl:use-attribute-sets="large-title-font">
+  <xsl:attribute name="font-size">14pt</xsl:attribute>
+  <xsl:attribute name="font-weight">bold</xsl:attribute>
+  <xsl:attribute name="space-after">8pt</xsl:attribute>
+  <xsl:attribute name="space-before">12pt</xsl:attribute>
+  <xsl:attribute name="font-variant">small-caps</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="work-short-font" xsl:use-attribute-sets="large-title-font">
+  <xsl:attribute name="font-size">12pt</xsl:attribute>
+  <xsl:attribute name="font-weight">bold</xsl:attribute>
+  <xsl:attribute name="space-before">4pt</xsl:attribute>
+  <xsl:attribute name="space-after">4pt</xsl:attribute>
+  <xsl:attribute name="font-variant">small-caps</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="post-title-font" xsl:use-attribute-sets="medium-title-font">
+  <xsl:attribute name="font-size">10pt</xsl:attribute>
+  <xsl:attribute name="font-weight">bold</xsl:attribute>
+  <xsl:attribute name="space-after">4pt</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="name-title-font" xsl:use-attribute-sets="verylarge-title-font">
+  <xsl:attribute name="font-size">16pt</xsl:attribute>
+  <xsl:attribute name="font-weight">bold</xsl:attribute>
+  <xsl:attribute name="space-after">8pt</xsl:attribute>
+  <!-- <xsl:attribute name="space-before">6pt</xsl:attribute> -->
+</xsl:attribute-set>
+<xsl:attribute-set name="default-font">
+  <xsl:attribute name="font-size">10pt</xsl:attribute>
+  <xsl:attribute name="space-after">4pt</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="section-block">
+  <xsl:attribute name="keep-together.within-page">always</xsl:attribute>
+  <!-- <xsl:attribute name="break-inside">avoid</xsl:attribute> -->
+  <!-- <xsl:attribute name="border-before-style">solid</xsl:attribute> -->
+  <!-- <xsl:attribute name="border-after-style">solid</xsl:attribute> -->
+  <!-- <xsl:attribute name="padding-before">5mm</xsl:attribute> -->
+  <xsl:attribute name="space-before">10mm</xsl:attribute>
+  <xsl:attribute name="space-before.conditionality">discard</xsl:attribute>
+</xsl:attribute-set>
+<!-- cv -->
+<xsl:template match="cv">
+  <xsl:variable name="fullname">
+    <xsl:apply-templates mode="fullname" select="identification"/>
+  </xsl:variable>
+  <root>
+    <layout-master-set>
+      <simple-page-master master-name="cv"
+                        margin-top="1cm" margin-bottom="1cm"
+                        margin-left="1cm" margin-right="1cm">
+        <region-body margin-top="1cm" margin-bottom="1cm"/>
+        <region-before extent="1cm" precedence="true"/>
+        <region-after extent="1cm" precedence="true"/>
+      </simple-page-master>
+      <page-sequence-master master-name="cv-sequence">
+        <repeatable-page-master-reference master-reference="cv"/>
+      </page-sequence-master>
+    </layout-master-set>
+
+    <page-sequence master-reference="cv-sequence">
+      <static-content flow-name="xsl-region-before">
+        <block border-after-style="solid">
+          <table width="100%" table-layout="fixed">
+            <table-column column-width="proportional-column-width(1)"
+                  number-columns-repeated="2"/>
+            <table-body>
+              <table-row>
+                <table-cell>
+                  <block text-align="start"><xsl:value-of select="$fullname"/></block>
+                </table-cell>
+                <table-cell>
+                  <block text-align="end"><xsl:value-of select="$date"/></block>
+                </table-cell>
+              </table-row>
+            </table-body>
+          </table>
+        </block>
+      </static-content>
+      <static-content flow-name="xsl-region-after">
+        <block border-before-style="solid">
+          <table width="100%" table-layout="fixed">
+            <table-column column-width="proportional-column-width(1)"
+                  number-columns-repeated="2"/>
+            <table-body>
+              <table-row>
+                <table-cell>
+                  <block text-align="start"><xsl:value-of select="$cv-uri"/></block>
+                </table-cell>
+                <table-cell>
+                  <block text-align="end">
+                    <xsl:call-template name="gentext">
+                      <xsl:with-param name="string">str-page</xsl:with-param>
+                    </xsl:call-template>
+                    <page-number/>
+                    <xsl:call-template name="gentext">
+                      <xsl:with-param name="string">str-page-of</xsl:with-param>
+                    </xsl:call-template>
+                    <page-number-citation ref-id="xsl_cv_the_end"/></block>
+                </table-cell>
+              </table-row>
+            </table-body>
+          </table>
+        </block>
+      </static-content>
+      <flow flow-name="xsl-region-body" xsl:use-attribute-sets="default-font">
+        <block xsl:use-attribute-sets="section-block">
+          <xsl:apply-templates select="identification"/>
+        </block>
+        <block xsl:use-attribute-sets="section-block" space-before.optimum="10pt" space-before.maximum="10pt">
+          <block xsl:use-attribute-sets="section-title-font">
+            <xsl:call-template name="gentext">
+              <xsl:with-param name="string">str-formation</xsl:with-param>
+            </xsl:call-template>
+          </block>
+          <list-block>
+            <xsl:apply-templates select="study" mode="short"/>
+          </list-block>
+        </block>
+        <block xsl:use-attribute-sets="section-block">
+          <block xsl:use-attribute-sets="section-title-font">
+            <xsl:call-template name="gentext">
+              <xsl:with-param name="string">str-competences</xsl:with-param>
+            </xsl:call-template>
+          </block>
+          <xsl:apply-templates select="knowledge"/>
+          <block keep-together.within-page="always">
+            <block xsl:use-attribute-sets="knowledge-title-font">
+              <xsl:call-template name="gentext">
+                <xsl:with-param name="string">str-languages</xsl:with-param>
+              </xsl:call-template>
+            </block>
+            <table width="100%" table-layout="fixed" margin-left="24pt">
+              <table-column column-width="proportional-column-width(1)"
+                  number-columns-repeated="2"/>
+              <table-body>
+                <table-row>
+                  <table-cell>
+                    <xsl:apply-templates select="language[not(@level='notions' or @level='learning')]"/>
+                  </table-cell>
+                  <table-cell>
+                    <xsl:apply-templates select="language[@level='notions']"/>
+                  </table-cell>
+                </table-row>
+              </table-body>
+            </table>
+          </block>
+        </block>
+        <block xsl:use-attribute-sets="section-block">
+          <block xsl:use-attribute-sets="section-title-font">
+            <xsl:call-template name="gentext">
+              <xsl:with-param name="string">str-projects</xsl:with-param>
+            </xsl:call-template>
+          </block>
+          <list-block>
+            <xsl:apply-templates select="project|concours" mode="short"/>
+          </list-block>
+        </block>
+        <block xsl:use-attribute-sets="section-block">
+          <block xsl:use-attribute-sets="section-title-font">
+            <xsl:call-template name="gentext">
+              <xsl:with-param name="string">str-hobbies</xsl:with-param>
+            </xsl:call-template>
+          </block>
+          <list-block>
+            <xsl:apply-templates select="interest" mode="short"/>
+          </list-block>
+        </block>
+        <block xsl:use-attribute-sets="section-block"
+	xsl:space-before="0mm">
+          <block xsl:use-attribute-sets="section-title-font">
+            <xsl:call-template name="gentext">
+              <xsl:with-param name="string">str-experience</xsl:with-param>
+            </xsl:call-template>
+          </block>
+          <xsl:apply-templates select="work"/>
+        </block>
+        <block visibility="hidden" id="xsl_cv_the_end"/>
+      </flow>
+    </page-sequence>
+  </root>
+</xsl:template>
+
+<xsl:template match="knownlist[@level='learning']"/>
+<xsl:template match="item[@role='old']" mode="short"/>
+<xsl:template match="work[@role='old']">
+  <!-- xsl:apply-templates select="." mode="short"/ -->
+</xsl:template>
+<xsl:template match="concours[@role='old']" mode="short"/>
+<xsl:template match="project[@role='old']" mode="short"/>
+
+<!-- identification section -->
+<xsl:template match="identification">
+  <table width="100%" table-layout="fixed">
+    <table-column column-width="proportional-column-width(1)"
+                  number-columns-repeated="2"/>
+    <table-body>
+    <table-row>
+      <table-cell>
+      <block xsl:use-attribute-sets="name-title-font"><xsl:apply-templates select="." mode="fullname"/></block>
+      <xsl:apply-templates select="title|email" mode="id"/>
+      </table-cell>
+      <table-cell>
+      <xsl:apply-templates mode="id" select="*[name(.) != 'title' and name(.) != 'email']"/>
+      </table-cell>
+    </table-row>
+    </table-body>
+  </table>
+</xsl:template>
+<!-- already process, so skip -->
+<xsl:template match="firstname|surname|initials" mode="id"/>
+<xsl:template mode="id" match="*">
+  <block><xsl:apply-templates select="."/></block>
+</xsl:template>
+<xsl:template mode="id" match="title">
+  <block font-weight="bold"><xsl:apply-templates/></block>
+</xsl:template>
+<xsl:template mode="id" match="email">
+  <block>
+    <xsl:call-template name="gentext">
+      <xsl:with-param name="string">str-email</xsl:with-param>
+    </xsl:call-template>
+    <xsl:text>: </xsl:text>
+    <xsl:apply-templates/>
+  </block>
+</xsl:template>
+<xsl:template mode="id" match="web">
+  <block><xsl:apply-templates/></block>
+</xsl:template>
+<xsl:template mode="id" match="address">
+  <xsl:apply-templates select="."/>
+</xsl:template>
+<xsl:template mode="id" match="phone">
+  <block>
+    <xsl:call-template name="gentext">
+      <xsl:with-param name="string">        
+        <xsl:choose>
+          <xsl:when test="@type='fax'">str-phone-fax</xsl:when>
+          <xsl:when test="@type='pager'">str-phone-pager</xsl:when>
+          <xsl:when test="@type='mobile'">str-phone-mobile</xsl:when>
+          <xsl:when test="@type='home'">str-phone-home</xsl:when>
+          <xsl:when test="@type='work'">str-phone-work</xsl:when>
+          <xsl:otherwise>str-phone</xsl:otherwise>
+        </xsl:choose>
+      </xsl:with-param>
+    </xsl:call-template>
+    <xsl:text>: </xsl:text>
+    <xsl:apply-templates/>
+  </block>
+</xsl:template>
+
+<!-- work -->
+<xsl:template match="work">
+  <block keep-together="always">
+    <xsl:apply-templates/>
+  </block>
+</xsl:template>
+<xsl:template match="work/organism">
+  <block xsl:use-attribute-sets="work-title-font"><xsl:apply-templates select="." mode="short"/></block>
+</xsl:template>
+
+<xsl:template match="work" mode="short">
+  <block keep-together.within-page="always">
+    <block xsl:use-attribute-sets="work-short-font"><xsl:apply-templates select="organism" mode="short"/></block>
+    <list-block>
+      <xsl:apply-templates select="post" mode="short"/>
+    </list-block>
+  </block>
+</xsl:template>
+<xsl:template match="post" mode="short">
+  <list-item>
+    <xsl:call-template name="list-label"/>
+    <list-item-body start-indent="body-start()">
+      <block>
+      <xsl:if test="title">
+        <xsl:apply-templates select="title" mode="short"/>
+        <xsl:text>; </xsl:text>
+      </xsl:if>
+      <xsl:apply-templates select="duration" mode="short"/>
+      <xsl:text>.</xsl:text>
+      </block>
+    </list-item-body>
+  </list-item>
+</xsl:template>
+
+<!-- post -->
+<xsl:template match="post">
+  <block keep-together.within-page="always">
+    <table width="100%" table-layout="fixed" space-after="6pt">
+      <table-column column-width="proportional-column-width(1)"/>
+      <table-column column-width="proportional-column-width(1)"/>
+      <table-body>
+        <table-row>
+          <table-cell>
+            <xsl:apply-templates select="title" mode="title"/>
+          </table-cell>
+          <table-cell>
+            <xsl:apply-templates select="supervisor|duration" mode="title"/>
+          </table-cell>
+        </table-row>
+      </table-body>
+    </table>
+    <block margin-left="24pt">
+      <xsl:apply-templates/>
+    </block>
+  </block>
+</xsl:template>
+<xsl:template match="post/supervisor|post/duration|post/title"/>
+<xsl:template match="post/title" mode="title">
+  <block xsl:use-attribute-sets="post-title-font"><xsl:apply-templates/></block>
+</xsl:template>
+<xsl:template match="supervisor" mode="title">
+  <block>
+    <xsl:call-template name="gentext">
+      <xsl:with-param name="string">str-supervisor</xsl:with-param>
+    </xsl:call-template>
+    <xsl:text>: </xsl:text>
+    <xsl:apply-templates mode="fullname" select="."/>
+  </block>
+</xsl:template>
+<xsl:template match="post/duration" mode="title">
+  <block><xsl:apply-templates/></block>
+</xsl:template>
+
+<!-- study -->
+<xsl:template match="study" mode="short">
+  <list-item>
+    <xsl:call-template name="list-label"/>
+    <list-item-body start-indent="body-start()">
+      <block>
+      <xsl:apply-templates select="studydomain"/>
+      <xsl:text> (</xsl:text>
+      <xsl:apply-templates select="duration"/>
+      <xsl:text>), </xsl:text>
+      <xsl:apply-templates select="organism" mode="short"/>
+      <xsl:text>.</xsl:text>
+      </block>
+    </list-item-body>
+  </list-item>
+</xsl:template>
+
+<!-- knowledge -->
+<xsl:template match="knowledge">
+  <block keep-together.within-page="always">
+    <block xsl:use-attribute-sets="knowledge-title-font">
+      <xsl:apply-templates select="name"/>
+    </block>
+    <table width="100%" table-layout="fixed" margin-left="24pt">
+      <table-column column-width="proportional-column-width(1)"
+          number-columns-repeated="{count(knownlist)}"/>
+      <table-header>
+        <table-row>
+          <xsl:apply-templates select="knownlist" mode="table-header"/>
+        </table-row>
+      </table-header>
+      <table-body>
+        <table-row>
+          <xsl:apply-templates select="knownlist"/>
+        </table-row>
+      </table-body>
+    </table>
+  </block>
+</xsl:template>
+<xsl:template match="knownlist" mode="table-header">
+  <table-cell>
+    <block font-weight="bold">
+      <xsl:call-template name="gentext">
+        <xsl:with-param name="string">          
+        <xsl:choose>
+          <xsl:when test="@level='notions'" >str-level-notions</xsl:when>
+          <xsl:when test="@level='learning'">str-level-learning</xsl:when>
+          <xsl:otherwise>str-level-known</xsl:otherwise><!-- 'known' -->
+        </xsl:choose>
+        </xsl:with-param>
+      </xsl:call-template>
+      <xsl:text>:</xsl:text>
+    </block>
+  </table-cell>
+</xsl:template>
+<xsl:template match="knownlist">
+  <table-cell>
+    <block><xsl:apply-templates mode="short"/></block>
+  </table-cell>
+</xsl:template>
+
+<xsl:template match="language">
+  <block>
+    <xsl:apply-templates/><xsl:text>: </xsl:text>
+    <inline font-style="italic" keep-together.within-line="always">
+      <xsl:call-template name="gentext">
+        <xsl:with-param name="string">          
+          <xsl:choose>
+            <xsl:when test="@level='notions'" >str-lang-notions</xsl:when>
+            <xsl:when test="@level='learning'">str-lang-learning</xsl:when>
+            <xsl:when test="@level='functional'" >str-lang-functional</xsl:when>
+            <xsl:otherwise>str-lang-known</xsl:otherwise><!-- 'known' -->
+          </xsl:choose>
+        </xsl:with-param>
+      </xsl:call-template>
+    </inline>
+  </block>
+</xsl:template>
+
+<!-- project/concours -->
+<xsl:template match="project|concours" mode="short">
+  <list-item>
+    <xsl:call-template name="list-label"/>
+    <list-item-body start-indent="body-start()">
+      <block>
+        <xsl:apply-templates select="organism" mode="short"/>
+        <xsl:text> (</xsl:text>
+        <xsl:apply-templates select="duration|year" mode="short"/>
+        <xsl:text>);</xsl:text>
+        <xsl:if test="description">
+          <xsl:text> </xsl:text>
+          <xsl:apply-templates select="description" mode="short"/>
+        </xsl:if>
+      </block>
+    </list-item-body>
+  </list-item>
+</xsl:template>
+
+<xsl:template match="interest" mode="short">
+  <list-item>
+    <xsl:call-template name="list-label"/>
+    <list-item-body start-indent="body-start()">
+      <block><xsl:apply-templates mode="short"/></block>
+    </list-item-body>
+  </list-item>
+</xsl:template>
+
+</xsl:stylesheet>