Showing:

Documentation
Parameters
Used by
References
Included from
Source
Stylesheet figures.xsl
Documentation

Description

TEI stylesheet dealing with elements from the figures module, making HTML output.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Author: See AUTHORS

Id: $Id: figures.xsl 7855 2010-07-17 14:16:19Z rahtz $

Copyright: 2008, TEI Consortium

Included from
Stylesheet version 2.0
Template m:*|@*|comment()|processing-instruction()|text()math
Documentation

Description

Process elements m:*|@*|comment()|processing-instruction()|text()
Namespace No namespace
Match m:*|@*|comment()|processing-instruction()|text()
Mode math
Import precedence 3
Source
<xsl:template match="m:*|@*|comment()|processing-instruction()|text()" mode="math">
  <xsl:copy>
    <xsl:apply-templates mode="math" select="*|@*|processing-instruction()|text()"/>
  </xsl:copy>
</xsl:template>
Stylesheet location ../../../xhtml2/figures.xsl
Template m:math
Documentation

Description

Process elements m:math
Namespace No namespace
Match m:math
Mode #default
Import precedence 3
Source
<xsl:template match="m:math">
  <m:math>
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates mode="math"/>
  </m:math>
</xsl:template>
Stylesheet location ../../../xhtml2/figures.xsl
Template tei:cell
Documentation

Description

Process element cell
Namespace No namespace
Match tei:cell
Mode #default
References
Parameter cellAlign
Template makeAnchor
Import precedence 3
Source
<xsl:template match="tei:cell">
  <td valign="top">
    <xsl:for-each select="@*">
      <xsl:choose>
        <xsl:when test="name(.) = 'width'          or name(.) = 'border'          or name(.) = 'cellspacing'          or name(.) = 'cellpadding'">
          <xsl:copy-of select="."/>
        </xsl:when>
        <xsl:when test="name(.)='rend' and starts-with(.,'width:')">
          <xsl:attribute name="width">
            <xsl:value-of select="substring-after(.,'width:')"/>
          </xsl:attribute>
        </xsl:when>
        <xsl:when test="name(.)='rend' and starts-with(.,'class:')">
          <xsl:attribute name="class">
            <xsl:value-of select="substring-after(.,'class:')"/>
          </xsl:attribute>
        </xsl:when>
        <xsl:when test="name(.)='rend' and starts-with(.,'style=')">
          <xsl:attribute name="style">
            <xsl:value-of select="substring-after(.,'style=')"/>
          </xsl:attribute>
        </xsl:when>
        <xsl:when test="name(.)='rend'">
          <xsl:attribute name="class">
            <xsl:value-of select="."/>
          </xsl:attribute>
        </xsl:when>
        <xsl:when test="name(.)='cols'">
          <xsl:attribute name="colspan">
            <xsl:value-of select="."/>
          </xsl:attribute>
        </xsl:when>
        <xsl:when test="name(.)='rows'">
          <xsl:attribute name="rowspan">
            <xsl:value-of select="."/>
          </xsl:attribute>
        </xsl:when>
        <xsl:when test="name(.)='align'">
          <xsl:attribute name="align">
            <xsl:value-of select="."/>
          </xsl:attribute>
        </xsl:when>
      </xsl:choose>
    </xsl:for-each>
    <xsl:if test="not(@align) and not($cellAlign='left')">
      <xsl:attribute name="align">
        <xsl:value-of select="$cellAlign"/>
      </xsl:attribute>
    </xsl:if>
    <xsl:if test="@role and not (@rend)">
      <xsl:attribute name="class">
        <xsl:value-of select="@role"/>
      </xsl:attribute>
    </xsl:if>
    <xsl:call-template name="makeAnchor"/>
    <xsl:apply-templates/>
  </td>
</xsl:template>
Stylesheet location ../../../xhtml2/figures.xsl
Template tei:figDesc
Documentation

Description

Process element figDesc
Namespace No namespace
Match tei:figDesc
Mode #default
Import precedence 3
Source
<xsl:template match="tei:figDesc"/>
Stylesheet location ../../../xhtml2/figures.xsl
Template tei:figure
Documentation

Description

Process element figure
Namespace No namespace
Match tei:figure
Mode #default
References
Import precedence 3
Source
<xsl:template match="tei:figure">
  <xsl:choose>
    <xsl:when test="@rend='inline' or @place='inline'">
      <xsl:call-template name="showGraphic"/>
    </xsl:when>
    <xsl:when test="parent::tei:ref">
      <xsl:call-template name="showGraphic"/>
    </xsl:when>
    <xsl:otherwise>
      <div>
        <xsl:choose>
          <xsl:when test="@rend">
            <xsl:attribute name="class">
              <xsl:value-of select="@rend"/>
            </xsl:attribute>
          </xsl:when>
          <xsl:when test="@rendition">
            <xsl:call-template name="applyRendition"/>
          </xsl:when>
          <xsl:otherwise>
            <xsl:attribute name="class">
              <xsl:text>figure</xsl:text>
            </xsl:attribute>
          </xsl:otherwise>
        </xsl:choose>
        <xsl:if test="@xml:id">
          <xsl:attribute name="id">
            <xsl:value-of select="@xml:id"/>
          </xsl:attribute>
        </xsl:if>
        <xsl:if test="@file|@url|@entity">
          <xsl:call-template name="showGraphic"/>
        </xsl:if>
        <xsl:call-template name="figureHook"/>
        <xsl:apply-templates/>
        <xsl:if test="tei:head">
          <div class="caption">
            <xsl:choose>
              <xsl:when test="ancestor::tei:front and  $numberFrontFigures='true'">
                <xsl:call-template name="i18n">
                  <xsl:with-param name="word">figureWord</xsl:with-param>
                </xsl:call-template>
                <xsl:text> </xsl:text>
                <xsl:number count="tei:figure[tei:head]" from="tei:front" level="any"/>
                <xsl:text>. </xsl:text>
              </xsl:when>
              <xsl:when test="ancestor::tei:back and $numberBackFigures='true'">
                <xsl:call-template name="i18n">
                  <xsl:with-param name="word">figureWord</xsl:with-param>
                </xsl:call-template>
                <xsl:text> </xsl:text>
                <xsl:number count="tei:figure[tei:head]" from="tei:back" level="any"/>
                <xsl:text>. </xsl:text>
              </xsl:when>
              <xsl:when test="ancestor::tei:body and $numberFigures='true'">
                <xsl:call-template name="i18n">
                  <xsl:with-param name="word">figureWord</xsl:with-param>
                </xsl:call-template>
                <xsl:text> </xsl:text>
                <xsl:number count="tei:figure[tei:head]" from="tei:body" level="any"/>
                <xsl:text>. </xsl:text>
              </xsl:when>
            </xsl:choose>
            <xsl:apply-templates select="tei:head" mode="ok"/>
          </div>
        </xsl:if>
      </div>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
Stylesheet location ../../../xhtml2/figures.xsl
Template tei:figure/tei:head
Documentation

Description

Process element figure/tei:head
Namespace No namespace
Match tei:figure/tei:head
Mode #default
Import precedence 3
Source
<xsl:template match="tei:figure/tei:head"/>
Stylesheet location ../../../xhtml2/figures.xsl
Template tei:formulaxref
Documentation

Description

Process element formula
Namespace No namespace
Match tei:formula
Mode xref
Import precedence 3
Source
<xsl:template match="tei:formula" mode="xref">
  <xsl:number/>
</xsl:template>
Stylesheet location ../../../xhtml2/figures.xsl
Template tei:graphic
Documentation

Description

Process element graphic
Namespace No namespace
Match tei:graphic
Mode #default
References
Template showGraphic
Import precedence 3
Source
<xsl:template match="tei:graphic">
  <xsl:call-template name="showGraphic"/>
</xsl:template>
Stylesheet location ../../../xhtml2/figures.xsl
Template tei:row
Documentation

Description

Process element row
Namespace No namespace
Match tei:row
Mode #default
References
Template rendToClass
Import precedence 3
Source
<xsl:template match="tei:row">
  <tr>
    <xsl:call-template name="rendToClass">
      <xsl:with-param name="default"/>
    </xsl:call-template>
    <xsl:if test="@role">
      <xsl:attribute name="class">
        <xsl:value-of select="@role"/>
      </xsl:attribute>
    </xsl:if>
    <xsl:apply-templates/>
  </tr>
</xsl:template>
Stylesheet location ../../../xhtml2/figures.xsl
Template tei:table
Documentation

Description

Process element table
Namespace No namespace
Match tei:table
Mode #default
References
Templates makeAnchor; rendToClass
Import precedence 3
Source
<xsl:template match="tei:table">
  <div>
    <xsl:attribute name="class">
      <xsl:text>table</xsl:text>
      <xsl:if test="@align">
        <xsl:text> </xsl:text>
        <xsl:value-of select="@align"/>
      </xsl:if>
    </xsl:attribute>
    <xsl:call-template name="makeAnchor"/>
    <table>
      <xsl:call-template name="rendToClass">
        <xsl:with-param name="id">false</xsl:with-param>
      </xsl:call-template>
      <xsl:if test="@rend='frame' or @rend='rules'">
        <xsl:attribute name="rules">all</xsl:attribute>
        <xsl:attribute name="border">1</xsl:attribute>
      </xsl:if>
      <xsl:for-each select="@*">
        <xsl:if test="name(.)='summary' or name(.) = 'width' or name(.) = 'border' or name(.) = 'frame' or name(.) = 'rules' or name(.) = 'cellspacing' or name(.) = 'cellpadding'">
          <xsl:copy-of select="."/>
        </xsl:if>
      </xsl:for-each>
      <xsl:if test="tei:head">
        <caption>
          <xsl:apply-templates mode="xref" select="."/>
        </caption>
      </xsl:if>
      <xsl:apply-templates select="tei:row"/>
    </table>
  </div>
</xsl:template>
Stylesheet location ../../../xhtml2/figures.xsl
Template tei:table[@rend='simple']
Documentation

Description

Process element table[@rend='simple']
Namespace No namespace
Match tei:table[@rend='simple']
Mode #default
References
Import precedence 3
Source
<xsl:template match="tei:table[@rend='simple']">
  <table>
    <xsl:choose>
      <xsl:when test="@rend">
        <xsl:attribute name="class">
          <xsl:value-of select="@rend"/>
        </xsl:attribute>
      </xsl:when>
      <xsl:when test="@rendition">
        <xsl:call-template name="applyRendition"/>
      </xsl:when>
    </xsl:choose>
    <xsl:for-each select="@*">
      <xsl:if test="name(.)='summary'    or name(.) = 'width'    or name(.) = 'border'    or name(.) = 'frame'    or name(.) = 'rules'    or name(.) = 'cellspacing'    or name(.) = 'cellpadding'">
        <xsl:copy-of select="."/>
      </xsl:if>
    </xsl:for-each>
    <xsl:call-template name="makeAnchor"/>
    <xsl:apply-templates/>
  </table>
</xsl:template>
Stylesheet location ../../../xhtml2/figures.xsl
Template setDimension
Documentation

Description

[html]

Parameters

name name

value value

Namespace No namespace
Used by
References
Parameter dpi
Parameters
QName Namespace
name No namespace
value No namespace
Import precedence 3
Source
<xsl:template name="setDimension">
  <xsl:param name="name"/>
  <xsl:param name="value"/>
  <xsl:variable name="calcvalue">
    <xsl:choose>
      <xsl:when test="contains($value,'in')">
        <xsl:value-of select="round($dpi * number(substring-before($value,'in')))"/>
      </xsl:when>
      <xsl:when test="contains($value,'pt')">
        <xsl:value-of select="round($dpi * (number(substring-before($value,'pt')) div 72))"/>
      </xsl:when>
      <xsl:when test="contains($value,'cm')">
        <xsl:value-of select="round($dpi * (number(substring-before($value,'cm')) div 2.54 ))"/>
      </xsl:when>
      <xsl:when test="contains($value,'px')">
        <xsl:value-of select="substring-before($value,'px')"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$value"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:variable>
  <xsl:attribute name="{$name}">
    <xsl:value-of select="$calcvalue"/>
  </xsl:attribute>
</xsl:template>
Stylesheet location ../../../xhtml2/figures.xsl
Template showGraphic
Documentation

Description

[html]
Namespace No namespace
Used by
Templates tei:figure; tei:graphic
References
Import precedence 3
Source
<xsl:template name="showGraphic">
  <xsl:variable name="File">
    <xsl:choose>
      <xsl:when test="@url">
        <xsl:value-of select="@url"/>
        <xsl:if test="not(contains(@url,'.'))">
          <xsl:value-of select="$graphicsSuffix"/>
        </xsl:if>
      </xsl:when>
      <xsl:when test="@file">
        <xsl:value-of select="@file"/>
        <xsl:if test="not(contains(@file,'.'))">
          <xsl:value-of select="$graphicsSuffix"/>
        </xsl:if>
      </xsl:when>
      <xsl:when test="@entity">
        <xsl:variable name="entity">
          <xsl:value-of select="unparsed-entity-uri(@entity)"/>
        </xsl:variable>
        <xsl:choose>
          <xsl:when test="starts-with($entity,'file:')">
            <xsl:value-of select="substring-after($entity,'file:')"/>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="$entity"/>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:when>
      <xsl:otherwise>
        <xsl:message terminate="yes">Cannot work out how to do a graphic</xsl:message>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:variable>
  <xsl:variable name="Alt">
    <xsl:choose>
      <xsl:when test="tei:figDesc">
        <xsl:for-each select="tei:figDesc">
          <xsl:apply-templates mode="plain"/>
        </xsl:for-each>
      </xsl:when>
      <xsl:when test="tei:head">
        <xsl:value-of select="tei:head/text()"/>
      </xsl:when>
      <xsl:when test="parent::tei:figure/tei:figDesc">
        <xsl:for-each select="parent::tei:figure/tei:figDesc">
          <xsl:apply-templates mode="plain"/>
        </xsl:for-each>
      </xsl:when>
      <xsl:when test="parent::tei:figure/tei:head">
        <xsl:value-of select="parent::tei:figure/tei:head/text()"/>
      </xsl:when>
    </xsl:choose>
  </xsl:variable>
  <xsl:choose>
    <xsl:when test="$showFigures='true'">
      <img src="{$graphicsPrefix}{$File}">
        <xsl:attribute name="alt">
          <xsl:value-of select="$Alt"/>
        </xsl:attribute>
        <xsl:call-template name="imgHook"/>
        <xsl:if test="@xml:id">
          <xsl:attribute name="id">
            <xsl:value-of select="@xml:id"/>
          </xsl:attribute>
        </xsl:if>
        <xsl:call-template name="rendToClass"/>
        <xsl:if test="@width">
          <xsl:call-template name="setDimension">
            <xsl:with-param name="value">
              <xsl:value-of select="@width"/>
            </xsl:with-param>
            <xsl:with-param name="name">width</xsl:with-param>
          </xsl:call-template>
        </xsl:if>
        <xsl:if test="@height">
          <xsl:call-template name="setDimension">
            <xsl:with-param name="value">
              <xsl:value-of select="@height"/>
            </xsl:with-param>
            <xsl:with-param name="name">height</xsl:with-param>
          </xsl:call-template>
        </xsl:if>
      </img>
    </xsl:when>
    <xsl:otherwise>
      <hr/>
      <p>
        <xsl:call-template name="i18n">
          <xsl:with-param name="word">figureWord</xsl:with-param>
        </xsl:call-template>
        <xsl:text> </xsl:text>
        <xsl:for-each select="self::tei:figure|parent::tei:figure">
          <xsl:number count="tei:figure[tei:head]" level="any"/>
        </xsl:for-each>
        <xsl:text> </xsl:text>
        <xsl:value-of select="$File"/>
        <xsl:text> [</xsl:text>
        <xsl:value-of select="$Alt"/>
        <xsl:text>] </xsl:text>
      </p>
      <hr/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
Stylesheet location ../../../xhtml2/figures.xsl
Template tei:binaryObject
Namespace No namespace
Match tei:binaryObject
Mode #default
References
Template setDimension
Import precedence 3
Source
<xsl:template match="tei:binaryObject">
  <img>
    <xsl:attribute name="src">
      <xsl:text>data:</xsl:text>
      <xsl:value-of select="@mimetype"/>
      <xsl:text>;base64,</xsl:text>
      <xsl:copy-of select="text()"/>
    </xsl:attribute>
    <xsl:if test="@width">
      <xsl:call-template name="setDimension">
        <xsl:with-param name="value">
          <xsl:value-of select="@width"/>
        </xsl:with-param>
        <xsl:with-param name="name">width</xsl:with-param>
      </xsl:call-template>
    </xsl:if>
    <xsl:if test="@height">
      <xsl:call-template name="setDimension">
        <xsl:with-param name="value">
          <xsl:value-of select="@height"/>
        </xsl:with-param>
        <xsl:with-param name="name">height</xsl:with-param>
      </xsl:call-template>
    </xsl:if>
  </img>
  <!-- also alt -->
  <!-- this is what we'll need for IE:
<style type="text/css">
   img {behavior: expression(fixBase64(this));}
  </style>
  <script type="text/javascript">
  	// a regular expression to test for Base64 data
	var BASE64_DATA = /^data:.*;base64/i;
	// path to the PHP module that will decode the encoded data
	var base64Path = "/my/base64.php";
	function fixBase64(img) {
		// stop the CSS expression from being endlessly evaluated
		img.runtimeStyle.behavior = "none";
		// check the image src
		if (BASE64_DATA.test(img.src)) {
		// pass the data to the PHP routine
		img.src = base64Path + "?" + img.src.slice(5);
		}
	};
  </script>
  Dean Edwards http://dean.edwards.name/weblog/2005/06/base64-sexy/
<?php
$data = split(";", $_SERVER["REDIRECT_QUERY_STRING"]);
$type = $data[0];
$data = split(",", $data[1]);
header("Content-type: ".$type);
echo base64_decode($data[1]);
?>
-->
</xsl:template>
Stylesheet location ../../../xhtml2/figures.xsl
Template svg:*
Namespace No namespace
Match svg:*
Mode #default
Import precedence 3
Source
<xsl:template match="svg:*">
  <xsl:copy-of select="."/>
</xsl:template>
Stylesheet location ../../../xhtml2/figures.xsl