Mode:

Compact lists

Showing:

Documentation
Used by
References
Included from
Source
Stylesheet graphics.xsl
Documentation

Description

TEI stylesheet for making Word docx files from TEI XML

This software is dual-licensed: 1. Distributed under a Creative Commons Attribution-ShareAlike 3.0 Unported License http://creativecommons.org/licenses/by-sa/3.0/ 2. http://www.opensource.org/licenses/BSD-2-Clause All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * 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 copyright holders 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 copyright holder 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.

Author: See AUTHORS

Id: $Id: graphics.xsl 11235 2012-12-18 19:27:51Z rahtz $

Copyright: 2008, TEI Consortium

Included from
Stylesheet version 2.0
Template a:blipiden
Documentation

Description

Guides the identity transformation for graphics
Namespace No namespace
Match a:blip
Mode iden
References
Key
Import precedence 15
Source
<xsl:template match="a:blip" mode="iden">
  <xsl:variable name="me" select="generate-id()"/>
  <a:blip>
    <xsl:variable name="rId">
      <xsl:for-each select="key('BLIP',1)">
        <xsl:if test="generate-id()=$me">
          <xsl:value-of select="concat('rId', string(200 + position()))"/>
        </xsl:if>
      </xsl:for-each>
    </xsl:variable>
    <xsl:choose>
      <xsl:when test="@r:embed">
        <xsl:attribute name="r:embed" select="$rId"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:attribute name="r:link" select="$rId"/>
      </xsl:otherwise>
    </xsl:choose>
  </a:blip>
</xsl:template>
Stylesheet location ../../../docx/to/graphics.xsl
Template tei:figure
Documentation

Description

 
        Handle figures 
    
Namespace No namespace
Match tei:figure
Mode #default
References
Template
Parameter
Import precedence 15
Source
<xsl:template match="tei:figure">
  <xsl:choose>
    <xsl:when test="@rend='inline' or @place='inline'">
      <xsl:apply-templates/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="block-element">
        <xsl:with-param name="pPr">
          <w:pPr>
            <w:spacing w:before="240"/>
            <w:jc w:val="{$alignFigures}"/>
          </w:pPr>
        </xsl:with-param>
      </xsl:call-template>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
Stylesheet location ../../../docx/to/graphics.xsl
Template tei:figure/tei:figDesc
Namespace No namespace
Match tei:figure/tei:figDesc
Mode #default
Import precedence 15
Source
<xsl:template match="tei:figure/tei:figDesc"/>
Stylesheet location ../../../docx/to/graphics.xsl
Template tei:figure/tei:head
Namespace No namespace
Match tei:figure/tei:head
Mode #default
References
Template
Import precedence 15
Source
<xsl:template match="tei:figure/tei:head">
  <xsl:variable name="number">
    <xsl:number level="any"/>
  </xsl:variable>
  <xsl:choose>
    <xsl:when test="../@xml:id">
      <!-- we want a bookmark for referencing this figure -->
      <xsl:call-template name="block-element">
        <xsl:with-param name="style">
          <xsl:choose>
            <xsl:when test="ancestor::tei:back">Figuretitleannex</xsl:when>
            <xsl:otherwise>Figuretitle</xsl:otherwise>
          </xsl:choose>
        </xsl:with-param>
        <xsl:with-param name="bookmark-id">
          <xsl:value-of select="1000+$number"/>
        </xsl:with-param>
        <xsl:with-param name="bookmark-name">
          <xsl:value-of select="../@xml:id"/>
        </xsl:with-param>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="block-element">
        <xsl:with-param name="style">
          <xsl:choose>
            <xsl:when test="ancestor::tei:back">Figuretitleannex</xsl:when>
            <xsl:otherwise>Figuretitle</xsl:otherwise>
          </xsl:choose>
        </xsl:with-param>
      </xsl:call-template>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
Stylesheet location ../../../docx/to/graphics.xsl
Template tei:graphic
Namespace No namespace
Match tei:graphic
Mode #default
References
Import precedence 15
Source
<xsl:template match="tei:graphic">
  <!-- perform some tests on the graphic -->
  <xsl:variable name="maxWidth" select="number(number($pageWidth)*100) cast as xs:integer"/>
  <xsl:variable name="maxHeight" select="number(number($pageHeight)*100) cast as          xs:integer"/>
  <xsl:variable name="filename">
    <xsl:text>media/resource</xsl:text>
    <xsl:number level="any"/>
    <xsl:text>.</xsl:text>
    <xsl:value-of select="tokenize(@url,'\.')[last()]"/>
  </xsl:variable>
  <xsl:variable name="S" select="tei:graphicSizes(.,$filename)"/>
  <xsl:choose>
    <xsl:when test="$filename and  ( (number($S/@origwidth) > 0 and number($S/@origheight) > 0) or (@width and @height))">
      <!-- check for sense -->
      <xsl:variable name="imageWidth">
        <xsl:choose>
          <xsl:when test="$S/@Width = -1">
            <xsl:value-of select="$maxWidth"/>
          </xsl:when>
          <xsl:when test="$S/@Width > $maxWidth">
            <xsl:value-of select="$maxWidth"/>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="$S/@Width"/>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:variable>
      <xsl:variable name="imageHeight">
        <xsl:choose>
          <xsl:when test="$S/@Height = -1">
            <xsl:value-of select="$maxHeight"/>
          </xsl:when>
          <xsl:when test="$S/@Width > $maxWidth">
            <xsl:value-of select="($S/@Height * ($maxWidth div      $S/@Width) ) cast as xs:integer"/>
          </xsl:when>
          <xsl:when test="$S/@Height > $maxHeight">
            <xsl:value-of select="$maxHeight"/>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="$S/@Height"/>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:variable>
      <xsl:if test="$debug='true'">
        <xsl:message>====== Graphic
          <xsl:value-of select="@url"/>============
          <xsl:for-each select="@*">- @
            <xsl:value-of select="name(.)"/>:
            <xsl:value-of select="."/>
          </xsl:for-each>- maxWidth:
          <xsl:value-of select="$maxWidth"/>- maxHeight:
          <xsl:value-of select="$maxHeight"/>- Width:
          <xsl:value-of select="$S/@Width"/>- $S/@Height:
          <xsl:value-of select="$S/@Height"/>* imageWidth:
          <xsl:value-of select="$imageWidth"/>* imageHeight:
          <xsl:value-of select="$imageHeight"/>
        </xsl:message>
      </xsl:if>
      <!-- prepare actual graphic -->
      <xsl:variable name="generatedID">
        <xsl:number level="any"/>
        <!--
		<xsl:choose>
		<xsl:when test="@n">
		  <xsl:value-of select="@n"/>
		</xsl:when>
		<xsl:otherwise>
		  <xsl:number level="any"/>
		</xsl:otherwise>
	      </xsl:choose>
	      -->
      </xsl:variable>
      <xsl:variable name="graphic-element">
        <a:graphic>
          <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture">
            <pic:pic>
              <pic:nvPicPr>
                <pic:cNvPr name="{tokenize($filename, '/')[last()]}">
                  <xsl:attribute name="id">
                    <xsl:number level="any"/>
                  </xsl:attribute>
                </pic:cNvPr>
                <pic:cNvPicPr/>
              </pic:nvPicPr>
              <pic:blipFill>
                <a:blip>
                  <xsl:attribute name="r:embed">
                    <xsl:choose>
                      <xsl:when test="$isofreestanding='true'">
                        <xsl:text>rId</xsl:text>
                        <xsl:value-of select="number($generatedID)           + 300"/>
                      </xsl:when>
                      <xsl:otherwise>
                        <xsl:value-of select="document(concat($wordDirectory,'/word/_rels/document.xml.rels'))//rel:Relationship[@Target=$filename]/@Id"/>
                      </xsl:otherwise>
                    </xsl:choose>
                  </xsl:attribute>
                </a:blip>
                <a:stretch>
                  <a:fillRect/>
                </a:stretch>
              </pic:blipFill>
              <pic:spPr>
                <a:xfrm>
                  <a:off x="0" y="0"/>
                  <a:ext cx="{$imageWidth}00" cy="{$imageHeight}00"/>
                </a:xfrm>
                <a:prstGeom prst="rect">
                  <a:avLst/>
                </a:prstGeom>
                <xsl:if test="$shadowGraphics='true'            and parent::tei:figure">
                  <a:effectLst>
                    <a:outerShdw blurRad="50800" dist="88900" dir="2700000" algn="tl" rotWithShape="0">
                      <a:schemeClr val="tx1">
                        <a:alpha val="49000"/>
                      </a:schemeClr>
                    </a:outerShdw>
                  </a:effectLst>
                </xsl:if>
              </pic:spPr>
            </pic:pic>
          </a:graphicData>
        </a:graphic>
      </xsl:variable>
      <!-- end graphic element -->
      <w:r>
        <w:drawing>
          <!-- choose between inline and block -->
          <xsl:choose>
            <xsl:when test="parent::tei:figure[@place='left'           or @place='centre' or @place='right' or @place='center']">
              <wp:anchor simplePos="0" relativeHeight="10" behindDoc="0" locked="0" layoutInCell="1" allowOverlap="1">
                <wp:simplePos x="0" y="0"/>
                <wp:positionH relativeFrom="margin">
                  <wp:align>
                    <xsl:value-of select="parent::tei:figure/@place"/>
                  </wp:align>
                </wp:positionH>
                <wp:positionV relativeFrom="paragraph">
                  <wp:align>center</wp:align>
                </wp:positionV>
                <wp:extent cx="{$imageWidth}00" cy="{$imageHeight}00"/>
                <xsl:if test="$shadowGraphics='true'">
                  <wp:effectExtent l="50800" t="25400" r="101600" b="63500"/>
                </xsl:if>
                <wp:wrapSquare wrapText="bothSides"/>
                <wp:docPr name="{tokenize($filename, '/')[last()]}">
                  <xsl:attribute name="id">
                    <xsl:value-of select="$generatedID"/>
                  </xsl:attribute>
                </wp:docPr>
                <xsl:if test="$shadowGraphics='true'">
                  <wp:cNvGraphicFramePr/>
                </xsl:if>
                <xsl:copy-of select="$graphic-element"/>
              </wp:anchor>
            </xsl:when>
            <xsl:otherwise>
              <wp:inline distT="0" distB="0" distL="0" distR="0">
                <wp:extent cx="{$imageWidth}00" cy="{$imageHeight}00"/>
                <xsl:if test="$shadowGraphics='true'">
                  <wp:effectExtent l="50800" t="25400" r="101600" b="63500"/>
                </xsl:if>
                <wp:docPr name="{tokenize($filename, '/')[last()]}">
                  <xsl:attribute name="id">
                    <xsl:value-of select="$generatedID"/>
                  </xsl:attribute>
                </wp:docPr>
                <xsl:if test="$shadowGraphics='true'">
                  <wp:cNvGraphicFramePr/>
                </xsl:if>
                <xsl:copy-of select="$graphic-element"/>
              </wp:inline>
            </xsl:otherwise>
          </xsl:choose>
        </w:drawing>
      </w:r>
    </xsl:when>
    <xsl:otherwise>
      <xsl:message terminate="yes">ERROR. no image size info for
        <xsl:value-of select="$filename"/>, cannot proceed</xsl:message>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
Stylesheet location ../../../docx/to/graphics.xsl
Key W
Namespace No namespace
Match image
Use @url
Used by
Source
<xsl:key name="W" match="image" use="@url"/>
Stylesheet location ../../../docx/to/graphics.xsl
Key H
Namespace No namespace
Match image
Use @url
Used by
Source
<xsl:key name="H" match="image" use="@url"/>
Stylesheet location ../../../docx/to/graphics.xsl