/ .. / / -> download
<?xml version="1.0" encoding="UTF-8"?>

<!-- ********************************************************************

     This file is part of the S1000D XSL stylesheet distribution.
     
     Copyright (C) 2010-2011 Smart Avionics Ltd.
     
     See ../COPYING for copyright details and other information.

     ******************************************************************** -->

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:d="http://docbook.org/ns/docbook"
  xmlns:fo="http://www.w3.org/1999/XSL/Format"
  xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"
  xmlns:rx="http://www.renderx.com/XSL/Extensions" version="1.0">
  
  <!-- figures ********************************************************************** -->

  <xsl:param name="formal.title.placement">
    figure after
    example before
    equation after
    table before
    procedure before
  </xsl:param>
  
<!--  <xsl:template match="d:mediaobject|d:imageobject|d:imagedata">
    <fo:block border="black solid 1pt">
      <xsl:apply-imports/>
    </fo:block>
  </xsl:template>-->

  <!-- Remove strict keep-together from figures, since S1000D figures may
       consist of multiple sheets. -->
  <xsl:attribute-set name="figure.properties" use-attribute-sets="formal.object.properties">
    <xsl:attribute name="keep-together.within-column">auto</xsl:attribute>
  </xsl:attribute-set>

  <xsl:template match="d:mediaobject/d:caption">
    <fo:block keep-with-previous="always">
      <xsl:choose>
        <xsl:when test="@role = 'title'">
          <xsl:attribute name="text-align">center</xsl:attribute>
          <xsl:attribute name="font-style">italic</xsl:attribute>
        </xsl:when>
        <xsl:otherwise>
          <xsl:attribute name="text-align">right</xsl:attribute>
        </xsl:otherwise>
      </xsl:choose>
      <xsl:apply-templates/>
    </fo:block>
  </xsl:template>

  <xsl:template name="image.content.width">
    <xsl:param name="scalefit" select="0"/>
    <xsl:param name="scale" select="'1.0'"/>

    <xsl:choose>
      <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when>
      <xsl:when test="contains(@contentwidth,'%')">
        <xsl:value-of select="@contentwidth"/>
      </xsl:when>
      <xsl:when test="@contentwidth">
        <xsl:call-template name="length-spec">
          <xsl:with-param name="length" select="@contentwidth"/>
          <xsl:with-param name="default.units" select="'px'"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:when test="number($scale) != 1.0">
        <xsl:value-of select="$scale * 100"/>
        <xsl:text>%</xsl:text>
      </xsl:when>
      <xsl:when test="$scalefit = 1">scale-down-to-fit</xsl:when>
      <xsl:otherwise>auto</xsl:otherwise>
    </xsl:choose>
  </xsl:template>

  <xsl:template name="image.content.height">
    <xsl:param name="scalefit" select="0"/>
    <xsl:param name="scale" select="0"/>

    <xsl:choose>
      <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when>
      <xsl:when test="contains(@contentdepth,'%')">
        <xsl:value-of select="@contentdepth"/>
      </xsl:when>
      <xsl:when test="@contentdepth">
        <xsl:call-template name="length-spec">
          <xsl:with-param name="length" select="@contentdepth"/>
          <xsl:with-param name="default.units" select="'px'"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:when test="number($scale) != 1.0">
        <xsl:value-of select="$scale * 100"/>
        <xsl:text>%</xsl:text>
      </xsl:when>
      <xsl:when test="$scalefit = 1">scale-down-to-fit</xsl:when>
      <xsl:otherwise>auto</xsl:otherwise>
    </xsl:choose>
  </xsl:template>

  <xsl:template name="formal.object.heading">
    <xsl:param name="object" select="."/>
    <xsl:param name="placement" select="'before'"/>

    <xsl:if test="not($object/self::d:figure)">
      <fo:block xsl:use-attribute-sets="formal.title.properties">
        <xsl:choose>
          <xsl:when test="$placement = 'before'">
            <xsl:attribute
                   name="keep-with-next.within-column">always</xsl:attribute>
          </xsl:when>
          <xsl:otherwise>
            <xsl:attribute
                   name="keep-with-previous.within-column">always</xsl:attribute>
          </xsl:otherwise>
        </xsl:choose>
        <xsl:apply-templates select="$object" mode="object.title.markup">
          <xsl:with-param name="allow-anchors" select="1"/>
        </xsl:apply-templates>
      </fo:block>
    </xsl:if>
  </xsl:template>

</xsl:stylesheet>


/ gopher://khzae.net/0/s1000d/S1000D-XSL-Stylesheets/src/dbtofo/figures.xsl
Styles: Light Dark Classic