<?xml version="1.0"?>
<!DOCTYPE xsl:transform [
- <!ENTITY % xhtml.characters SYSTEM "htmlchar.mod">
+ <!ENTITY % xhtml.characters SYSTEM "../../en/xml/htmlchar.mod">
%xhtml.characters;
]>
$Id$
$Log$
+Revision 1.15 2007/02/02 20:04:28 jonathan.blake
+Correction to handling line elements
+
+Revision 1.14 2006/12/20 00:15:21 jonathan.blake
+Updated to handle the new capabilities in version 0.12.1 of the Gamebook DTD.
+
+Revision 1.13 2006/11/25 04:47:00 jonathan.blake
+Removal of obsolete apache namespace.
+
+Revision 1.12 2006/06/05 23:46:46 jonathan.blake
+Fixing the handling of titles when <ch.*/> elements are used.
+
+Revision 1.11 2006/04/04 18:48:52 angantyr
+Fixed paragraphed list and illref template bug.
+
+Revision 1.10 2006/04/02 19:14:37 angantyr
+Introduced automatic footnotes list generation and changed the illustrations
+list generation so that links to numbered sections are titled "Section ...".
+Backwards compatible with old XML files.
+
+Revision 1.9 2006/03/14 21:04:03 angantyr
+Changed the illustration handling with the introduction of 'illref's.
+Backwards compatible.
+
+Revision 1.8 2006/03/13 18:38:49 jonathan.blake
+Fixed minor Spanish translation issue
+
+Revision 1.7 2006/03/09 18:56:33 jonathan.blake
+Added a language parameter and coding to switch between languages when the output is hard-coded into the transformation.
+
+Revision 1.5 2006/03/02 00:33:32 jonathan.blake
+Removed the 'book-path' parameter to work with new gbtoxhtml.pl
+
+Revision 1.4 2005/12/27 01:51:29 angantyr
+Added templates for the "bookref" and "footref" elements.
+
Revision 1.3 2005/12/05 21:29:04 jonathan.blake
Added the facilities to properly handle character elements.
<xsl:transform version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:lxslt="http://xml.apache.org/xslt"
xmlns:redirect="org.apache.xalan.lib.Redirect"
extension-element-prefixes="redirect">
<!-- ====================== parameters ========================== -->
-<xsl:param name="book-path"><xsl:text>undefined-book</xsl:text></xsl:param>
<xsl:param name="use-illustrators" />
-
+<xsl:param name="language"><xsl:text>en</xsl:text></xsl:param>
+
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~ colors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<xsl:param name="link-color"><xsl:text>#ff0000</xsl:text></xsl:param>
<!-- :::::::::::: third-level front matter sections ::::::::::::: -->
<xsl:template match="/gamebook/section/data/section/data/section[@class='frontmatter']">
- <h3><xsl:value-of select="meta/title[1]" /></h3>
+ <h3><xsl:apply-templates select="meta/title[1]" /></h3>
<xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<!-- :::::::::::: fourth-level front matter sections :::::::::::: -->
<xsl:template match="/gamebook/section/data/section/data/section/data/section[@class='frontmatter']">
- <h4><xsl:value-of select="meta/title[1]" /></h4>
+ <h4><xsl:apply-templates select="meta/title[1]" /></h4>
<xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<!-- ::::::::::::: fifth-level front matter sections :::::::::::: -->
<xsl:template match="/gamebook/section/data/section/data/section/data/section/data/section[@class='frontmatter']">
- <h5><xsl:value-of select="meta/title[1]" /></h5>
+ <h5><xsl:apply-templates select="meta/title[1]" /></h5>
<xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<!-- :::::::::::: third-level main matter sections ::::::::::::: -->
<xsl:template match="/gamebook/section/data/section/data/section[@class='mainmatter']">
- <h3><xsl:value-of select="meta/title[1]" /></h3>
+ <h3><xsl:apply-templates select="meta/title[1]" /></h3>
<xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<!-- :::::::::::: fourth-level main matter sections :::::::::::: -->
<xsl:template match="/gamebook/section/data/section/data/section/data/section[@class='mainmatter']">
- <h4><xsl:value-of select="meta/title[1]" /></h4>
+ <h4><xsl:apply-templates select="meta/title[1]" /></h4>
<xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<!-- ::::::::::::: fifth-level main matter sections :::::::::::: -->
<xsl:template match="/gamebook/section/data/section/data/section/data/section/data/section[@class='mainmatter']">
- <h5><xsl:value-of select="meta/title[1]" /></h5>
+ <h5><xsl:apply-templates select="meta/title[1]" /></h5>
<xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<!-- glossary sections should be enclosed in a second level glossary section -->
<xsl:template match="/gamebook/section/data/section/data/section[@class='glossary']">
- <h3><xsl:value-of select="meta/title[1]" /></h3>
+ <h3><xsl:apply-templates select="meta/title[1]" /></h3>
<xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<!-- ::::::::::::: third-level back matter sections ::::::::::::: -->
<xsl:template match="/gamebook/section/data/section/data/section[@class='backmatter']">
- <h3><xsl:value-of select="meta/title[1]" /></h3>
+ <h3><xsl:apply-templates select="meta/title[1]" /></h3>
<xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<!-- ::::::::::::: fourth-level back matter sections ::::::::::::: -->
<xsl:template match="/gamebook/section/data/section/data/section/data/section[@class='backmatter']">
- <h4><xsl:value-of select="meta/title[1]" /></h4>
+ <h4><xsl:apply-templates select="meta/title[1]" /></h4>
<xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
</xsl:call-template>
</xsl:template>
+<!-- ::::::::::::::::::::: footnotes template ::::::::::::::::::::::::: -->
+
+<xsl:template match="id( 'footnotz' )">
+ <xsl:choose>
+ <!-- Backwards compatibility measure - if there is data content, use that, otherwise generate footnotes list -->
+ <xsl:when test="count( data/p ) = 0">
+ <xsl:call-template name="xhtml-wrapper">
+ <xsl:with-param name="document-type">footnotz</xsl:with-param>
+ <xsl:with-param name="filename"><xsl:value-of select="@id" /></xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="xhtml-wrapper">
+ <xsl:with-param name="document-type">second-level-backmatter</xsl:with-param>
+ <xsl:with-param name="filename"><xsl:value-of select="@id" /></xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates />
+</xsl:template>
+
<!-- ==================== block elements ======================== -->
<xsl:template match="p">
</blockquote><xsl:value-of select="$newline" />
</xsl:when>
<xsl:when test="self::illustration">
+ <!-- Backwards compatibility code -->
<xsl:variable name="illustration-width" select="instance[@class='html']/@width" />
<xsl:variable name="illustration-height" select="instance[@class='html']/@height" />
<xsl:variable name="illustration-src" select="instance[@class='html']/@src" />
<xsl:if test="instance[@class='html'] and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )">
- <div class="illustration"><div align="center"><xsl:value-of select="$newline" />
- <table border="0" cellpadding="0" cellspacing="0"><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrtpl.gif" width="32" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrtp.gif" width="{$illustration-width}" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrtpr.gif" width="32" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrl.gif" width="32" height="{$illustration-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="{$illustration-src}" width="{$illustration-width}" height="{$illustration-height}" border="0" align="middle" alt="[illustration]" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrr.gif" width="32" height="{$illustration-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrbtl.gif" width="32" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrbt.gif" width="{$illustration-width}" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrbtr.gif" width="32" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- </table><br /><xsl:value-of select="$newline" />
+ <div class="illustration">
+ <div align="center"><xsl:value-of select="$newline" />
+ <xsl:call-template name="illustration-framed">
+ <xsl:with-param name="illustration-width"><xsl:value-of select="$illustration-width" /></xsl:with-param>
+ <xsl:with-param name="illustration-height"><xsl:value-of select="$illustration-height" /></xsl:with-param>
+ <xsl:with-param name="illustration-src"><xsl:value-of select="$illustration-src" /></xsl:with-param>
+ </xsl:call-template>
+ <br /><xsl:value-of select="$newline" />
</div></div><xsl:value-of select="$newline" />
</xsl:if>
</xsl:when>
+ <xsl:when test="self::illref">
+ <xsl:if test="@class='html'">
+ <xsl:for-each select="id( @idref )">
+ <xsl:apply-templates select="." />
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:when>
<xsl:otherwise>
<xsl:text>[error: paragraphed list template]</xsl:text>
+ <xsl:message><xsl:text>error: paragraphed list template</xsl:text></xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="table">
<table border="1" cellspacing="0" cellpadding="2">
+ <xsl:if test="@summary"><xsl:attribute name="summary"><xsl:value-of select="@summary" /></xsl:attribute></xsl:if>
<xsl:apply-templates />
</table>
<xsl:value-of select="$newline" />
</xsl:template>
+<xsl:template match="caption">
+ <caption>
+ <xsl:apply-templates />
+ </caption>
+</xsl:template>
+
+<xsl:template match="colgroup[@scope]">
+ <colgroup>
+ <xsl:attribute name="scope"><xsl:value-of select="@scope" /></xsl:attribute>
+ </colgroup>
+</xsl:template>
+
+<xsl:template match="thead">
+ <thead>
+ <xsl:apply-templates />
+ </thead>
+</xsl:template>
+
+<xsl:template match="tfoot">
+ <tfoot>
+ <xsl:apply-templates />
+ </tfoot>
+</xsl:template>
+
+<xsl:template match="tbody">
+ <tbody>
+ <xsl:apply-templates />
+ </tbody>
+</xsl:template>
+
<xsl:template match="tr">
<tr>
<xsl:apply-templates />
<xsl:if test="@align"><xsl:attribute name="align"><xsl:value-of select="@align" /></xsl:attribute></xsl:if>
<xsl:if test="@valign"><xsl:attribute name="valign"><xsl:value-of select="@valign" /></xsl:attribute></xsl:if>
<xsl:if test="@char"><xsl:attribute name="char"><xsl:value-of select="@char" /></xsl:attribute></xsl:if>
+ <xsl:if test="@rowspan"><xsl:attribute name="rowspan"><xsl:value-of select="@rowspan" /></xsl:attribute></xsl:if>
+ <xsl:if test="@colspan"><xsl:attribute name="colspan"><xsl:value-of select="@colspan" /></xsl:attribute></xsl:if>
+ <xsl:if test="@axis"><xsl:attribute name="axis"><xsl:value-of select="@axis" /></xsl:attribute></xsl:if>
+ <xsl:if test="@scope"><xsl:attribute name="scope"><xsl:value-of select="@scope" /></xsl:attribute></xsl:if>
<xsl:apply-templates />
</th>
</xsl:template>
<xsl:if test="@align"><xsl:attribute name="align"><xsl:value-of select="@align" /></xsl:attribute></xsl:if>
<xsl:if test="@valign"><xsl:attribute name="valign"><xsl:value-of select="@valign" /></xsl:attribute></xsl:if>
<xsl:if test="@char"><xsl:attribute name="char"><xsl:value-of select="@char" /></xsl:attribute></xsl:if>
+ <xsl:if test="@rowspan"><xsl:attribute name="rowspan"><xsl:value-of select="@rowspan" /></xsl:attribute></xsl:if>
+ <xsl:if test="@colspan"><xsl:attribute name="colspan"><xsl:value-of select="@colspan" /></xsl:attribute></xsl:if>
+ <xsl:if test="@axis"><xsl:attribute name="axis"><xsl:value-of select="@axis" /></xsl:attribute></xsl:if>
+ <xsl:if test="@scope"><xsl:attribute name="scope"><xsl:value-of select="@scope" /></xsl:attribute></xsl:if>
<xsl:apply-templates />
</td>
</xsl:template>
<xsl:text>: </xsl:text>
<xsl:choose>
<xsl:when test="enemy-attribute[@class='combatskill']">
- <span class="smallcaps">COMBAT<xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>SKILL</span>
- <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>
+ <span class="smallcaps">
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text>DESTREZA EN EL COMBATE</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>COMBAT SKILL</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+ <xsl:text> </xsl:text>
<xsl:value-of select="enemy-attribute[@class='combatskill']" />
</xsl:when>
<xsl:when test="enemy-attribute[@class='closecombatskill']">
- <span class="smallcaps">CLOSE<xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>COMBAT<xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>SKILL</span>
- <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>
+ <span class="smallcaps">
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text>CLOSE COMBAT SKILL</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>CLOSE COMBAT SKILL</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+ <xsl:text> </xsl:text>
<xsl:value-of select="enemy-attribute[@class='closecombatskill']" />
</xsl:when>
</xsl:choose>
- <xsl:text disable-output-escaping="yes"> &nbsp;&nbsp;</xsl:text>
- <span class="smallcaps">ENDURANCE</span>
+ <xsl:text> </xsl:text>
+ <span class="smallcaps">
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text>RESISTENCIA</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>ENDURANCE</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
<xsl:choose>
<xsl:when test="enemy-attribute[@class='target']">
- <xsl:text> (</xsl:text><span class="smallcaps">TARGET</span><xsl:text> points)</xsl:text>
- <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text> (o </xsl:text><span class="smallcaps">BLANCOS</span><xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> (</xsl:text><span class="smallcaps">TARGET</span><xsl:text> points)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text> </xsl:text>
<xsl:value-of select="enemy-attribute[@class='target']" />
</xsl:when>
<xsl:when test="enemy-attribute[@class='resistance']">
- <xsl:text> (</xsl:text><span class="smallcaps">RESISTANCE</span><xsl:text> points)</xsl:text>
- <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'"></xsl:when>
+ <xsl:otherwise>
+ <xsl:text> (</xsl:text><span class="smallcaps">RESISTANCE</span><xsl:text> points)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text> </xsl:text>
<xsl:value-of select="enemy-attribute[@class='resistance']" />
</xsl:when>
<xsl:otherwise>
- <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>
+ <xsl:text> </xsl:text>
<xsl:value-of select="enemy-attribute[@class='endurance']" />
</xsl:otherwise>
</xsl:choose>
</blockquote><xsl:value-of select="$newline" />
</xsl:template>
+<xsl:template match="illref">
+ <!-- It is important that the class is not checked right in the template - that would make this template match with higher priority, which will turn a few things upside down -->
+ <xsl:if test="@class='html'">
+ <xsl:for-each select="id( @idref )">
+ <!-- This creates unneccessary regeneration of float illustration pages, but it is easiest to keep things this way as long as we have to be backwards compatible... -->
+ <!-- When backwards compatibility can be dropped, most of (all?) the <illustration> processing can happen here -->
+ <xsl:apply-templates select="." />
+ </xsl:for-each>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="illustrations">
+ <ul class="unbulleted">
+ <xsl:for-each select="illustration[contains( $use-illustrators, concat( ':', meta/creator, ':' ) )] | illgroup">
+ <xsl:choose>
+ <xsl:when test="self::illustration and @class='float'">
+ <!-- List item with illustration name as link -->
+ <li>
+ <a>
+ <xsl:attribute name="href"><xsl:text>ill</xsl:text><xsl:number count="illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]" from="/" level="any" format="1" /><xsl:text>.htm</xsl:text></xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text>Ilustración </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Illustration </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:number count="illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]" from="/" level="any" format="I" />
+ </a>
+ <!-- List the sections that the illustration appears in -->
+ <xsl:text> (</xsl:text>
+ <xsl:for-each select="//illref[@class='html' and @idref=current()/@id]">
+ <xsl:call-template name="section-title-link" />
+ <xsl:if test="position()!=last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>)</xsl:text><xsl:value-of select="$newline" />
+ </li>
+ <!-- Call the backwards compatible template for generating the illustration page -->
+ <xsl:call-template name="xhtml-wrapper">
+ <xsl:with-param name="document-type">illustration</xsl:with-param>
+ <xsl:with-param name="filename"><xsl:text>ill</xsl:text><xsl:number count="illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) ) ]" from="/" level="any" format="1" /></xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="self::illustration"> <!-- inline and map -->
+ <!-- List the sections that the illustration appears in -->
+ <li>
+ <!-- TODO: fix this so that sections that do not represent separate XHTML files are not linked to? -->
+ <xsl:for-each select="//illref[@class='html' and @idref=current()/@id]">
+ <xsl:call-template name="section-title-link" />
+ <xsl:if test="position()!=last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </li>
+ </xsl:when>
+
+ <xsl:when test="self::illgroup and @class!='hidden'">
+ <!-- Check if the group contains any illustrations being used, before creating the list item -->
+ <xsl:if test="count( illustration[contains( $use-illustrators, concat( ':', meta/creator, ':' ) )] ) != 0">
+ <li>
+ <a>
+ <xsl:attribute name="href"><xsl:value-of select="@idref" /><xsl:text>.htm</xsl:text></xsl:attribute>
+ <xsl:value-of select="id(@idref)/meta/title[1]" />
+ </a>
+ </li>
+ </xsl:if>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </ul><xsl:value-of select="$newline" />
+</xsl:template>
+
<xsl:template match="illustration">
<xsl:variable name="illustration-width" select="instance[@class='html']/@width" />
<xsl:variable name="illustration-height" select="instance[@class='html']/@height" />
<xsl:if test="instance[@class='html'] and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )">
<xsl:choose>
<xsl:when test="@class='float'">
- <div class="illustration"><div align="center"><xsl:value-of select="$newline" />
- <table border="0" cellpadding="0" cellspacing="0"><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrtpl.gif" width="32" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrtp.gif" width="{$illustration-width-adjusted}" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrtpr.gif" width="32" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrl.gif" width="32" height="{$illustration-height-adjusted}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td>
- <a>
- <xsl:attribute name="href"><xsl:text>ill</xsl:text><xsl:number count="illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]" from="/" level="any" format="1" /><xsl:text>.htm</xsl:text></xsl:attribute>
- <img src="{$illustration-src}" width="{$illustration-width-adjusted}" height="{$illustration-height-adjusted}" border="0" align="middle" alt="[illustration]" />
- </a>
- </td><xsl:value-of select="$newline" />
- <td><img src="brdrr.gif" width="32" height="{$illustration-height-adjusted}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrbtl.gif" width="32" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrbt.gif" width="{$illustration-width-adjusted}" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrbtr.gif" width="32" height="32" align="middle" alt=""/></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- </table><br /><xsl:value-of select="$newline" />
+ <div class="illustration">
+ <div align="center"><xsl:value-of select="$newline" />
+ <xsl:call-template name="illustration-framed">
+ <xsl:with-param name="illustration-width"><xsl:value-of select="$illustration-width-adjusted" /></xsl:with-param>
+ <xsl:with-param name="illustration-height"><xsl:value-of select="$illustration-height-adjusted" /></xsl:with-param>
+ <xsl:with-param name="illustration-src"><xsl:value-of select="$illustration-src" /></xsl:with-param>
+ <xsl:with-param name="illustration-href">
+ <xsl:text>ill</xsl:text><xsl:number count="illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]" from="/" level="any" format="1" /><xsl:text>.htm</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <br /><xsl:value-of select="$newline" />
</div></div><xsl:value-of select="$newline" />
<xsl:call-template name="xhtml-wrapper">
<xsl:when test="@class='accent'" />
<xsl:otherwise>
- <div class="illustration"><div align="center"><xsl:value-of select="$newline" />
- <table border="0" cellpadding="0" cellspacing="0"><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrtpl.gif" width="32" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrtp.gif" width="{$illustration-width}" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrtpr.gif" width="32" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrl.gif" width="32" height="{$illustration-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="{$illustration-src}" width="{$illustration-width}" height="{$illustration-height}" border="0" align="middle" alt="[illustration]" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrr.gif" width="32" height="{$illustration-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrbtl.gif" width="32" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrbt.gif" width="{$illustration-width}" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrbtr.gif" width="32" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- </table><br /><xsl:value-of select="$newline" />
+ <div class="illustration">
+ <div align="center"><xsl:value-of select="$newline" />
+ <xsl:call-template name="illustration-framed">
+ <xsl:with-param name="illustration-width"><xsl:value-of select="$illustration-width" /></xsl:with-param>
+ <xsl:with-param name="illustration-height"><xsl:value-of select="$illustration-height" /></xsl:with-param>
+ <xsl:with-param name="illustration-src"><xsl:value-of select="$illustration-src" /></xsl:with-param>
+ </xsl:call-template>
+ <br /><xsl:value-of select="$newline" />
</div></div><xsl:value-of select="$newline" />
</xsl:otherwise>
</xsl:choose>
-
</xsl:if>
</xsl:template>
</xsl:when>
<xsl:otherwise>
<xsl:text>[error: a template]</xsl:text>
+ <xsl:message><xsl:text>error: a template</xsl:text></xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:choose>
</xsl:template>
+<!-- This template is obsolete, the "footref" element should be used instead -->
<xsl:template match="a[@class='footnote']">
+ <!-- <xsl:message><xsl:text>WARNING: Obsolete <a idref='...' class='footnote' /> usage</xsl:text></xsl:message> -->
<xsl:apply-templates />
<sup>
<a>
</sup>
</xsl:template>
+<!-- TODO: can this be made more uniform with illrefs? -->
<xsl:template match="a[@class='accent-illustration']">
<xsl:for-each select="id( @idref )">
<xsl:variable name="illustration-src" select="instance[@class='html']/@src" />
</xsl:for-each>
</xsl:template>
+<xsl:template match="bookref">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:variable name="my-section">
+ <xsl:choose>
+ <xsl:when test="@section">
+ <xsl:value-of select="@section" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>title</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="my-series">
+ <!-- If series is specified, go one directory back and then to series. Otherwise, add nothing. -->
+ <xsl:choose>
+ <xsl:when test="@series">
+ <xsl:text>/../</xsl:text><xsl:value-of select="@series" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text></xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:text>..</xsl:text><xsl:value-of select="$my-series" /><xsl:text>/</xsl:text><xsl:value-of select="@book" /><xsl:text>/</xsl:text><xsl:value-of select="$my-section" /><xsl:text>.htm</xsl:text>
+ </xsl:attribute>
+ <xsl:if test="@id"><xsl:attribute name="name"><xsl:value-of select="@id" /></xsl:attribute></xsl:if>
+ <xsl:apply-templates />
+ </a>
+</xsl:template>
+
+<xsl:template match="footref">
+ <xsl:apply-templates />
+ <sup>
+ <a>
+ <xsl:attribute name="href"><xsl:text>#</xsl:text><xsl:value-of select="@idref" /></xsl:attribute>
+ <xsl:attribute name="name"><xsl:value-of select="@id" /></xsl:attribute>
+ <xsl:number count="footref" from="/" level="any" format="1" />
+ </a>
+ </sup>
+</xsl:template>
+
<xsl:template match="em">
<em><xsl:apply-templates /></em>
</xsl:template>
<tt><xsl:apply-templates /></tt>
</xsl:template>
+<xsl:template match="line">
+ <xsl:apply-templates />
+ <xsl:if test="position( ) != last( )"><br /></xsl:if>
+</xsl:template>
+
<xsl:template match="br">
<br />
</xsl:template>
<xsl:param name="filename">undefined</xsl:param>
<xsl:param name="glossary-id-prefix"></xsl:param>
-<!-- <redirect:write file="{$book-path}/{$filename}.htm">-->
+<!-- <redirect:write file="{$filename}.htm">-->
<redirect:write file="{$filename}.htm">
<xsl:fallback>
<xsl:text>xhtml-wrapper: Cannot write to filename: "</xsl:text>
<head><xsl:value-of select="$newline" />
<title>
- <xsl:value-of select="/gamebook/meta/title[1]" />
+ <xsl:apply-templates select="/gamebook/meta/title[1]" />
<xsl:text>: </xsl:text>
<xsl:choose>
<xsl:when test="$document-type='illustration'">
- <xsl:text>Illustration </xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text>Ilustración </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Illustration </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
<xsl:number count="illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]" from="/" level="any" format="I" />
</xsl:when>
- <xsl:otherwise><xsl:value-of select="meta/title[1]" /></xsl:otherwise>
+ <xsl:otherwise><xsl:apply-templates select="meta/title[1]" /></xsl:otherwise>
</xsl:choose>
</title><xsl:value-of select="$newline" />
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1" /><xsl:value-of select="$newline" />
<xsl:comment>
<xsl:text> </xsl:text>
<xsl:apply-templates select="/gamebook/meta/rights[@class='copyrights']" />
- <xsl:text> Published by </xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text> Publicado por </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> Published by </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
<xsl:apply-templates select="/gamebook/meta/publisher[1]" />
<xsl:text>. </xsl:text>
</xsl:comment>
<xsl:attribute name="vlink"><xsl:value-of select="$vlink-color" /></xsl:attribute>
<xsl:value-of select="$newline" />
- <div id="title"><img src="title.gif" width="550" height="100" border="0" align="middle" usemap="#imagemap"><xsl:attribute name="alt"><xsl:value-of select="/gamebook/meta/title[1]" /></xsl:attribute></img></div><xsl:value-of select="$newline" />
+ <div id="title"><img src="title.gif" width="550" height="100" border="0" align="middle" usemap="#imagemap"><xsl:attribute name="alt"><xsl:apply-templates select="/gamebook/meta/title[1]" /></xsl:attribute></img></div><xsl:value-of select="$newline" />
<div id="body"><xsl:value-of select="$newline" />
<xsl:choose>
<xsl:apply-templates select="/gamebook/meta/description[@class='publication']" />
<p>
- <xsl:text>Publication Date: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text>Fecha de Publicación: </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Publication Date: </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
<xsl:value-of select="/gamebook/meta/date[@class='publication']/day" />
<xsl:text> </xsl:text>
<xsl:choose>
<xsl:when test="/gamebook/meta/date[@class='publication']/month = 1">
- <xsl:text>January</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'"><xsl:text>de enero de</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>January</xsl:text></xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:when test="/gamebook/meta/date[@class='publication']/month = 2">
- <xsl:text>February</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'"><xsl:text>de febrero de</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>February</xsl:text></xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:when test="/gamebook/meta/date[@class='publication']/month = 3">
- <xsl:text>March</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'"><xsl:text>de marzo de</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>March</xsl:text></xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:when test="/gamebook/meta/date[@class='publication']/month = 4">
- <xsl:text>April</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'"><xsl:text>de abril de</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>April</xsl:text></xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:when test="/gamebook/meta/date[@class='publication']/month = 5">
- <xsl:text>May</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'"><xsl:text>de mayo de</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>May</xsl:text></xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:when test="/gamebook/meta/date[@class='publication']/month = 6">
- <xsl:text>June</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'"><xsl:text>de junio de</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>June</xsl:text></xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:when test="/gamebook/meta/date[@class='publication']/month = 7">
- <xsl:text>July</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'"><xsl:text>de julio de</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>July</xsl:text></xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:when test="/gamebook/meta/date[@class='publication']/month = 8">
- <xsl:text>August</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'"><xsl:text>de agosto de</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>August</xsl:text></xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:when test="/gamebook/meta/date[@class='publication']/month = 9">
- <xsl:text>September</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'"><xsl:text>de septiembre de</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>September</xsl:text></xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:when test="/gamebook/meta/date[@class='publication']/month = 10">
- <xsl:text>October</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'"><xsl:text>de octubre de</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>October</xsl:text></xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:when test="/gamebook/meta/date[@class='publication']/month = 11">
- <xsl:text>November</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'"><xsl:text>de noviembre de</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>November</xsl:text></xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:when test="/gamebook/meta/date[@class='publication']/month = 12">
- <xsl:text>December</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'"><xsl:text>de diciembre de</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>December</xsl:text></xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:text>Invalid Month</xsl:text>
<xsl:when test="$document-type='toc'">
<div class="frontmatter"><xsl:value-of select="$newline" />
- <h2>Table of Contents</h2><xsl:value-of select="$newline" />
+ <h2>
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text>Índice de Contenidos</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Table of Contents</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h2><xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<ul><xsl:value-of select="$newline" />
- <li><a href="title.htm">Title Page</a></li><xsl:value-of select="$newline" />
+ <xsl:variable name="title-page">
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text>Página Principal</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Title Page</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <li><a href="title.htm"><xsl:value-of select="$title-page"/></a></li><xsl:value-of select="$newline" />
<xsl:for-each select="/gamebook/section/data/section">
<li>
<a><xsl:attribute name="href"><xsl:value-of select="@id" /><xsl:text>.htm</xsl:text></xsl:attribute>
- <xsl:value-of select="meta/title[1]" />
+ <xsl:apply-templates select="meta/title[1]" />
</a>
<xsl:if test="data/section[@class='frontmatter-separate' or @class='mainmatter-separate']">
<xsl:value-of select="$newline" />
<xsl:when test="$document-type='second-level-frontmatter'">
<div class="frontmatter"><xsl:value-of select="$newline" />
- <h2><xsl:value-of select="meta/title" /></h2><xsl:value-of select="$newline" />
+ <h2><xsl:apply-templates select="meta/title" /></h2><xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<xsl:when test="$document-type='third-level-frontmatter-separate'">
<div class="frontmatter"><xsl:value-of select="$newline" />
- <h3><xsl:value-of select="meta/title" /></h3><xsl:value-of select="$newline" />
+ <h3><xsl:apply-templates select="meta/title" /></h3><xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<xsl:apply-templates />
<xsl:when test="$document-type='second-level-mainmatter'">
<div class="mainmatter"><xsl:value-of select="$newline" />
- <h2><xsl:value-of select="meta/title" /></h2><xsl:value-of select="$newline" />
+ <h2><xsl:apply-templates select="meta/title" /></h2><xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<xsl:apply-templates />
<xsl:when test="$document-type='third-level-mainmatter-separate'">
<div class="mainmatter"><xsl:value-of select="$newline" />
- <h3><xsl:value-of select="meta/title" /></h3><xsl:value-of select="$newline" />
+ <h3><xsl:apply-templates select="meta/title" /></h3><xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<xsl:apply-templates />
<xsl:when test="$document-type='second-level-glossary'">
<div class="mainmatter"><xsl:value-of select="$newline" />
- <h2><xsl:value-of select="meta/title" /></h2><xsl:value-of select="$newline" />
+ <h2><xsl:apply-templates select="meta/title" /></h2><xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<xsl:apply-templates />
<xsl:when test="$document-type='third-level-glossary-separate'">
<div class="glossary"><xsl:value-of select="$newline" />
- <h3><xsl:value-of select="meta/title" /></h3><xsl:value-of select="$newline" />
+ <h3><xsl:apply-templates select="meta/title" /></h3><xsl:value-of select="$newline" />
<xsl:call-template name="alpha-bar">
<xsl:with-param name="alpha-bar-id-prefix"><xsl:value-of select="$glossary-id-prefix" /></xsl:with-param>
</xsl:call-template>
-->
<xsl:when test="$document-type='second-level-numbered'">
<div class="numbered"><xsl:value-of select="$newline" />
- <h2><xsl:value-of select="meta/title" /></h2><xsl:value-of select="$newline" />
+ <h2><xsl:apply-templates select="meta/title" /></h2><xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<xsl:variable name="base-section-number" select="number( data/section[1]/meta/title ) - 1" />
</xsl:if>
<a>
<xsl:attribute name="href"><xsl:value-of select="@id" /><xsl:text>.htm</xsl:text></xsl:attribute>
- <xsl:value-of select="meta/title" />
+ <xsl:apply-templates select="meta/title" />
</a>
<xsl:choose>
<xsl:when test="position( ) mod 10 = 0">
<xsl:when test="$document-type='third-level-numbered'">
<div class="numbered"><xsl:value-of select="$newline" />
- <h3><xsl:value-of select="meta/title" /></h3><xsl:value-of select="$newline" />
+ <h3><xsl:apply-templates select="meta/title" /></h3><xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<xsl:apply-templates />
</div>
</xsl:when>
+<!-- ~~~~~~~~~~~~~~~~~ footnotes ~~~~~~~~~~~~~~~~~~~ -->
+
+ <xsl:when test="$document-type='footnotz'">
+ <div class="backmatter">
+ <xsl:value-of select="$newline" />
+ <!-- No particular reason to code title here -->
+ <h2><xsl:apply-templates select="meta/title" /></h2><xsl:value-of select="$newline" />
+ <xsl:value-of select="$newline" />
+ <xsl:value-of select="$newline" />
+
+ <!-- Generate list of footnotes -->
+ <xsl:for-each select="//footnotes/footnote">
+ <div class="footnote">
+ <!-- will the list always contain the closest ancestor first? -->
+ <xsl:variable name="footnote-section"><xsl:value-of select="ancestor::section[position()=1]/@id" /></xsl:variable>
+ <xsl:variable name="footnote-marker"><xsl:number count="footnotes/footnote" from="/" level="any" format="1" /></xsl:variable>
+ <xsl:variable name="footnote-idref"><xsl:value-of select="@idref" /></xsl:variable>
+
+ <xsl:for-each select="*[1]">
+ <p>
+ <xsl:text>[</xsl:text>
+ <a>
+ <xsl:attribute name="href"><xsl:value-of select="$footnote-section" /><xsl:text>.htm#</xsl:text><xsl:value-of select="$footnote-idref" /></xsl:attribute>
+ <xsl:value-of select="$footnote-marker" />
+ </a>
+ <xsl:text>] </xsl:text>
+
+ <xsl:text> (</xsl:text>
+ <xsl:call-template name="section-title-link" />
+ <xsl:text>) </xsl:text>
+
+ <xsl:apply-templates select="child::* | child::text()" />
+ </p>
+ </xsl:for-each>
+
+ <xsl:for-each select="*[position() != 1]">
+ <xsl:apply-templates select="." />
+ </xsl:for-each>
+
+ </div>
+ </xsl:for-each>
+
+ <!-- Backwards compatibility... needed? Probably not. -->
+ <xsl:apply-templates />
+
+ <xsl:value-of select="$newline" />
+
+ <xsl:call-template name="navigation-bar" />
+ <xsl:value-of select="$newline" />
+ </div><xsl:value-of select="$newline" /><xsl:value-of select="$newline" />
+ </xsl:when>
+
<!-- ~~~~~~~~~~~~~~~~~ second-level-backmatter ~~~~~~~~~~~~~~~~~~~ -->
<xsl:when test="$document-type='second-level-backmatter'">
<div class="frontmatter"><xsl:value-of select="$newline" />
- <h2><xsl:value-of select="meta/title" /></h2><xsl:value-of select="$newline" />
+ <h2><xsl:apply-templates select="meta/title" /></h2><xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<xsl:when test="$document-type='map-adjusted'">
<div class="frontmatter"><xsl:value-of select="$newline" />
- <h2><xsl:value-of select="meta/title" /></h2><xsl:value-of select="$newline" />
+ <h2><xsl:apply-templates select="meta/title" /></h2><xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<xsl:for-each select="data/* | data/text()">
+ <xsl:variable name="map-illustration-alt-text">
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text>mapa</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>map</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- duplicated stuff here, no good way to avoid this while retaining backwards compatibility -->
<xsl:choose>
<xsl:when test="self::illustration and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )">
<xsl:variable name="illustration-width" select="instance[@class='html']/@width" />
<xsl:variable name="illustration-height-adjusted"><xsl:number value="$illustration-height * $illustration-width-adjusted div $illustration-width" /></xsl:variable>
<div class="illustration"><div align="center"><xsl:value-of select="$newline" />
- <table border="0" cellpadding="0" cellspacing="0"><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrtpl.gif" width="31" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrtp.gif" width="{$illustration-width-adjusted}" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrtpr.gif" width="33" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrl.gif" width="31" height="{$illustration-height-adjusted}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><a href="maplarge.htm"><img src="{$illustration-src}" width="{$illustration-width-adjusted}" height="{$illustration-height-adjusted}" align="middle" border="0" alt="[map]" /></a></td><xsl:value-of select="$newline" />
- <td><img src="brdrr.gif" width="33" height="{$illustration-height-adjusted}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrbtl.gif" width="31" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrbt.gif" width="{$illustration-width-adjusted}" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrbtr.gif" width="33" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- </table><xsl:value-of select="$newline" />
+ <xsl:call-template name="illustration-framed">
+ <xsl:with-param name="illustration-width"><xsl:value-of select="$illustration-width-adjusted" /></xsl:with-param>
+ <xsl:with-param name="illustration-height"><xsl:value-of select="$illustration-height-adjusted" /></xsl:with-param>
+ <xsl:with-param name="illustration-src"><xsl:value-of select="$illustration-src" /></xsl:with-param>
+ <xsl:with-param name="illustration-href">maplarge.htm</xsl:with-param>
+ <xsl:with-param name="brdrl-width">31</xsl:with-param>
+ <xsl:with-param name="brdrr-width">33</xsl:with-param>
+ <xsl:with-param name="illustration-alt-text">[{$map-illustration-alt-text}]</xsl:with-param>
+ </xsl:call-template>
<br /><br />
</div></div><xsl:value-of select="$newline" />
</xsl:when>
+
+ <xsl:when test="self::illref and @class='html'">
+ <xsl:for-each select="id( @idref )">
+ <xsl:if test="contains( $use-illustrators, concat( ':', meta/creator, ':' ) )">
+ <xsl:variable name="illustration-width" select="instance[@class='html']/@width" />
+ <xsl:variable name="illustration-height" select="instance[@class='html']/@height" />
+ <xsl:variable name="illustration-src" select="instance[@class='html']/@src" />
+
+ <xsl:variable name="illustration-width-adjusted"><xsl:number value="386" /></xsl:variable>
+ <xsl:variable name="illustration-height-adjusted"><xsl:number value="$illustration-height * $illustration-width-adjusted div $illustration-width" /></xsl:variable>
+
+ <div class="illustration">
+ <div align="center"><xsl:value-of select="$newline" />
+ <xsl:call-template name="illustration-framed">
+ <xsl:with-param name="illustration-width"><xsl:value-of select="$illustration-width-adjusted" /></xsl:with-param>
+ <xsl:with-param name="illustration-height"><xsl:value-of select="$illustration-height-adjusted" /></xsl:with-param>
+ <xsl:with-param name="illustration-src"><xsl:value-of select="$illustration-src" /></xsl:with-param>
+ <xsl:with-param name="illustration-href">maplarge.htm</xsl:with-param>
+ <xsl:with-param name="brdrl-width">31</xsl:with-param>
+ <xsl:with-param name="brdrr-width">33</xsl:with-param>
+ <xsl:with-param name="illustration-alt-text">[{$map-illustration-alt-text}]</xsl:with-param>
+ </xsl:call-template>
+ <br /><br />
+ </div></div><xsl:value-of select="$newline" />
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="." />
</xsl:otherwise>
<xsl:when test="$document-type='map'">
<div class="frontmatter"><xsl:value-of select="$newline" />
- <h2><xsl:value-of select="meta/title" /></h2><xsl:value-of select="$newline" />
+ <h2><xsl:apply-templates select="meta/title" /></h2><xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<xsl:value-of select="$newline" />
<xsl:for-each select="data/* | data/text()">
+ <xsl:variable name="map-illustration-alt-text">
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text>mapa</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>map</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- duplicated stuff here, no good way to avoid this while retaining backwards compatibility -->
<xsl:choose>
<xsl:when test="self::illustration and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )">
<xsl:variable name="illustration-width" select="instance[@class='html']/@width" />
<xsl:variable name="illustration-src" select="instance[@class='html']/@src" />
<div class="illustration"><div align="center"><xsl:value-of select="$newline" />
- <table border="0" cellpadding="0" cellspacing="0"><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrtpl.gif" width="31" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrtp.gif" width="{$illustration-width}" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrtpr.gif" width="33" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrl.gif" width="31" height="{$illustration-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><a href="map.htm"><img src="{$illustration-src}" width="{$illustration-width}" height="{$illustration-height}" align="middle" border="0" alt="[map]" /></a></td><xsl:value-of select="$newline" />
- <td><img src="brdrr.gif" width="33" height="{$illustration-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrbtl.gif" width="31" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrbt.gif" width="{$illustration-width}" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrbtr.gif" width="33" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- </table><br /><xsl:value-of select="$newline" />
+ <xsl:call-template name="illustration-framed">
+ <xsl:with-param name="illustration-width"><xsl:value-of select="$illustration-width" /></xsl:with-param>
+ <xsl:with-param name="illustration-height"><xsl:value-of select="$illustration-height" /></xsl:with-param>
+ <xsl:with-param name="illustration-src"><xsl:value-of select="$illustration-src" /></xsl:with-param>
+ <xsl:with-param name="illustration-href">map.htm</xsl:with-param>
+ <xsl:with-param name="brdrl-width">31</xsl:with-param>
+ <xsl:with-param name="brdrr-width">33</xsl:with-param>
+ <xsl:with-param name="illustration-alt-text">[{$map-illustration-alt-text}]</xsl:with-param>
+ </xsl:call-template>
+ <br /><xsl:value-of select="$newline" />
</div></div><xsl:value-of select="$newline" />
</xsl:when>
+
+ <xsl:when test="self::illref and @class='html'">
+ <xsl:for-each select="id( @idref )">
+ <xsl:if test="contains( $use-illustrators, concat( ':', meta/creator, ':' ) )">
+ <xsl:variable name="illustration-width" select="instance[@class='html']/@width" />
+ <xsl:variable name="illustration-height" select="instance[@class='html']/@height" />
+ <xsl:variable name="illustration-src" select="instance[@class='html']/@src" />
+
+ <div class="illustration">
+ <div align="center"><xsl:value-of select="$newline" />
+ <xsl:call-template name="illustration-framed">
+ <xsl:with-param name="illustration-width"><xsl:value-of select="$illustration-width" /></xsl:with-param>
+ <xsl:with-param name="illustration-height"><xsl:value-of select="$illustration-height" /></xsl:with-param>
+ <xsl:with-param name="illustration-src"><xsl:value-of select="$illustration-src" /></xsl:with-param>
+ <xsl:with-param name="illustration-href">map.htm</xsl:with-param>
+ <xsl:with-param name="brdrl-width">31</xsl:with-param>
+ <xsl:with-param name="brdrr-width">33</xsl:with-param>
+ <xsl:with-param name="illustration-alt-text">[{$map-illustration-alt-text}]</xsl:with-param>
+ </xsl:call-template>
+ <br /><xsl:value-of select="$newline" />
+ </div></div><xsl:value-of select="$newline" />
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="." />
</xsl:otherwise>
<xsl:variable name="illustration-src" select="instance[@class='html']/@src" />
<h3>
- <xsl:text>Illustration </xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text>Ilustración </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Illustration </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
<xsl:number count="illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]" from="/" level="any" format="I" />
</h3><xsl:value-of select="$newline" />
<div class="illustration"><div align="center"><xsl:value-of select="$newline" />
- <table border="0" cellpadding="0" cellspacing="0"><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrtpl.gif" width="31" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrtp.gif" width="{$illustration-width}" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrtpr.gif" width="33" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrl.gif" width="31" height="{$illustration-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="{$illustration-src}" width="{$illustration-width}" height="{$illustration-height}" align="middle" border="0" alt="[illustration]" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrr.gif" width="33" height="{$illustration-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- <tr><xsl:value-of select="$newline" />
- <td><img src="brdrbtl.gif" width="31" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrbt.gif" width="{$illustration-width}" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- <td><img src="brdrbtr.gif" width="33" height="32" align="middle" alt="" /></td><xsl:value-of select="$newline" />
- </tr><xsl:value-of select="$newline" />
- </table><br /><xsl:value-of select="$newline" />
+ <xsl:call-template name="illustration-framed">
+ <xsl:with-param name="illustration-width"><xsl:value-of select="$illustration-width" /></xsl:with-param>
+ <xsl:with-param name="illustration-height"><xsl:value-of select="$illustration-height" /></xsl:with-param>
+ <xsl:with-param name="illustration-src"><xsl:value-of select="$illustration-src" /></xsl:with-param>
+ <xsl:with-param name="brdrl-width">31</xsl:with-param>
+ <xsl:with-param name="brdrr-width">33</xsl:with-param>
+ </xsl:call-template>
+ <br /><xsl:value-of select="$newline" />
</div></div><xsl:value-of select="$newline" />
<p class="caption"><strong><xsl:apply-templates select="meta/description" /></strong></p><xsl:value-of select="$newline" />
</xsl:when>
<map name="imagemap" id="imagemap">
<area shape="rect" coords="0,0,99,99" href="http://www.projectaon.org/" alt="Project Aon" target="_top" />
<area shape="default" href="title.htm">
- <xsl:attribute name="alt"><xsl:value-of select="/gamebook/meta/title[1]" /></xsl:attribute>
+ <xsl:attribute name="alt"><xsl:apply-templates select="/gamebook/meta/title[1]" /></xsl:attribute>
</area>
</map>
</xsl:template>
<xsl:template name="navigation-bar">
+ <xsl:variable name="table-of-contents">
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text>Índice de Contenidos</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Table of Contents</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
<div class="navigation">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<xsl:when test="meta/link[@class='prev']">
<a>
<xsl:attribute name="href">
- <xsl:value-of select="meta/link[@class='prev']/@idref" />
+ <xsl:apply-templates select="meta/link[@class='prev']/@idref" />
<xsl:text>.htm</xsl:text>
</xsl:attribute>
<img src="back.gif" width="150" height="30" border="0">
</xsl:otherwise>
</xsl:choose>
</td>
- <td><a href="toc.htm"><img src="toc.gif" width="150" height="30" border="0" alt="Table of Contents" /></a></td>
+ <td><a href="toc.htm"><img src="toc.gif" width="150" height="30" border="0" alt="{$table-of-contents}" /></a></td>
<td>
<xsl:choose>
<xsl:when test="meta/link[@class='next']">
<xsl:attribute name="alt">
<xsl:choose>
<xsl:when test="meta/link[@class='next']/@idref = 'sect1'">
- <xsl:text>Section 1</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text>Sección 1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Section 1</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="id( meta/link[@class='next']/@idref )/meta/title" />
</xsl:template>
+<xsl:template name="illustration-framed">
+ <xsl:param name="brdrl-width">32</xsl:param>
+ <xsl:param name="brdr-height">32</xsl:param>
+ <xsl:param name="brdrr-width">32</xsl:param>
+ <xsl:param name="illustration-alt-text">
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text>ilustración</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>illustration</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:param name="illustration-width"></xsl:param>
+ <xsl:param name="illustration-height"></xsl:param>
+ <xsl:param name="illustration-src"></xsl:param>
+ <xsl:param name="illustration-href"></xsl:param>
+
+ <table border="0" cellpadding="0" cellspacing="0">
+ <xsl:value-of select="$newline" />
+ <tr>
+ <xsl:value-of select="$newline" />
+ <td><img src="brdrtpl.gif" width="{$brdrl-width}" height="{$brdr-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
+ <td><img src="brdrtp.gif" width="{$illustration-width}" height="{$brdr-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
+ <td><img src="brdrtpr.gif" width="{$brdrr-width}" height="{$brdr-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
+ </tr><xsl:value-of select="$newline" />
+ <tr>
+ <xsl:value-of select="$newline" />
+ <td><img src="brdrl.gif" width="{$brdrl-width}" height="{$illustration-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
+ <td>
+ <xsl:choose>
+ <xsl:when test="$illustration-href">
+ <a href="{$illustration-href}">
+ <img src="{$illustration-src}" width="{$illustration-width}" height="{$illustration-height}" align="middle" border="0" alt="{$illustration-alt-text}" />
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <img src="{$illustration-src}" width="{$illustration-width}" height="{$illustration-height}" align="middle" border="0" alt="[{$illustration-alt-text}]" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </td><xsl:value-of select="$newline" />
+ <td><img src="brdrr.gif" width="{$brdrr-width}" height="{$illustration-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
+ </tr><xsl:value-of select="$newline" />
+ <tr>
+ <xsl:value-of select="$newline" />
+ <td><img src="brdrbtl.gif" width="{$brdrl-width}" height="{$brdr-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
+ <td><img src="brdrbt.gif" width="{$illustration-width}" height="{$brdr-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
+ <td><img src="brdrbtr.gif" width="{$brdrr-width}" height="{$brdr-height}" align="middle" alt="" /></td><xsl:value-of select="$newline" />
+ </tr><xsl:value-of select="$newline" />
+ </table><xsl:value-of select="$newline" />
+</xsl:template>
+
+<!--
+ A "subroutine" to generate a link to the current section, with the section title (expanded with "Section " in case of a numbered section) as link text.
+-->
+<xsl:template name="section-title-link">
+ <!-- will the list always contain the closest ancestor first? -->
+ <xsl:variable name="section-title">
+ <!-- numbered or not? -->
+ <xsl:if test="ancestor::section[position()=1]/@class='numbered'">
+ <xsl:choose>
+ <xsl:when test="$language='es'">
+ <xsl:text>Sección </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Section </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:apply-templates select="ancestor::section[position()=1]/meta/title[1]" />
+ </xsl:variable>
+
+ <a>
+ <xsl:attribute name="href"><xsl:value-of select="ancestor::section[position()=1]/@id" /><xsl:text>.htm</xsl:text></xsl:attribute>
+ <xsl:value-of select="$section-title" />
+ </a>
+</xsl:template>
+
</xsl:transform>