| <?xml version="1.0"?> |
| <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
| version="1.0"> |
| |
| <xsl:template name="chunk"> |
| <xsl:param name="node" select="."/> |
| <!-- returns 1 if $node is a chunk --> |
| |
| <!-- ==================================================================== --> |
| <!-- What's a chunk? |
| |
| The root element |
| appendix |
| article |
| bibliography in article or book |
| book |
| chapter |
| colophon |
| glossary in article or book |
| index in article or book |
| part |
| preface |
| refentry |
| reference |
| sect{1,2,3,4,5} if position()>1 && depth < chunk.section.depth |
| section if position()>1 && depth < chunk.section.depth |
| set |
| setindex |
| --> |
| <!-- ==================================================================== --> |
| |
| <!-- |
| <xsl:message> |
| <xsl:text>chunk: </xsl:text> |
| <xsl:value-of select="name($node)"/> |
| <xsl:text>(</xsl:text> |
| <xsl:value-of select="$node/@id"/> |
| <xsl:text>)</xsl:text> |
| <xsl:text> csd: </xsl:text> |
| <xsl:value-of select="$chunk.section.depth"/> |
| <xsl:text> cfs: </xsl:text> |
| <xsl:value-of select="$chunk.first.sections"/> |
| <xsl:text> ps: </xsl:text> |
| <xsl:value-of select="count($node/parent::section)"/> |
| <xsl:text> prs: </xsl:text> |
| <xsl:value-of select="count($node/preceding-sibling::section)"/> |
| </xsl:message> |
| --> |
| |
| <xsl:choose> |
| <xsl:when test="not($node/parent::*)">1</xsl:when> |
| |
| <xsl:when test="local-name($node) = 'sect1' |
| and $chunk.section.depth >= 1 |
| and ($chunk.first.sections != 0 |
| or count($node/preceding-sibling::sect1) > 0)"> |
| <xsl:text>1</xsl:text> |
| </xsl:when> |
| <xsl:when test="local-name($node) = 'sect2' |
| and $chunk.section.depth >= 2 |
| and ($chunk.first.sections != 0 |
| or count($node/preceding-sibling::sect2) > 0)"> |
| <xsl:call-template name="chunk"> |
| <xsl:with-param name="node" select="$node/parent::*"/> |
| </xsl:call-template> |
| </xsl:when> |
| <xsl:when test="local-name($node) = 'sect3' |
| and $chunk.section.depth >= 3 |
| and ($chunk.first.sections != 0 |
| or count($node/preceding-sibling::sect3) > 0)"> |
| <xsl:call-template name="chunk"> |
| <xsl:with-param name="node" select="$node/parent::*"/> |
| </xsl:call-template> |
| </xsl:when> |
| <xsl:when test="local-name($node) = 'sect4' |
| and $chunk.section.depth >= 4 |
| and ($chunk.first.sections != 0 |
| or count($node/preceding-sibling::sect4) > 0)"> |
| <xsl:call-template name="chunk"> |
| <xsl:with-param name="node" select="$node/parent::*"/> |
| </xsl:call-template> |
| </xsl:when> |
| <xsl:when test="local-name($node) = 'sect5' |
| and $chunk.section.depth >= 5 |
| and ($chunk.first.sections != 0 |
| or count($node/preceding-sibling::sect5) > 0)"> |
| <xsl:call-template name="chunk"> |
| <xsl:with-param name="node" select="$node/parent::*"/> |
| </xsl:call-template> |
| </xsl:when> |
| <xsl:when test="local-name($node) = 'section' |
| and $chunk.section.depth >= count($node/ancestor::section)+1 |
| and ($chunk.first.sections != 0 |
| or count($node/preceding-sibling::section) > 0)"> |
| <xsl:call-template name="chunk"> |
| <xsl:with-param name="node" select="$node/parent::*"/> |
| </xsl:call-template> |
| </xsl:when> |
| |
| <xsl:when test="name($node)='preface'">1</xsl:when> |
| <xsl:when test="name($node)='chapter'">1</xsl:when> |
| <xsl:when test="name($node)='appendix'">1</xsl:when> |
| <xsl:when test="name($node)='article'">1</xsl:when> |
| <xsl:when test="name($node)='part'">1</xsl:when> |
| <xsl:when test="name($node)='reference'">1</xsl:when> |
| <xsl:when test="name($node)='refentry'">1</xsl:when> |
| <xsl:when test="name($node)='index' |
| and (name($node/parent::*) = 'article' |
| or name($node/parent::*) = 'book')">1</xsl:when> |
| <xsl:when test="name($node)='bibliography' |
| and (name($node/parent::*) = 'article' |
| or name($node/parent::*) = 'book')">1</xsl:when> |
| <xsl:when test="name($node)='glossary' |
| and (name($node/parent::*) = 'article' |
| or name($node/parent::*) = 'book')">1</xsl:when> |
| <xsl:when test="name($node)='colophon'">1</xsl:when> |
| <xsl:when test="name($node)='book'">1</xsl:when> |
| <xsl:when test="name($node)='set'">1</xsl:when> |
| <xsl:when test="name($node)='setindex'">1</xsl:when> |
| <xsl:otherwise>0</xsl:otherwise> |
| </xsl:choose> |
| </xsl:template> |
| |
| <!-- ==================================================================== --> |
| |
| <xsl:template match="*" mode="chunk-filename"> |
| <!-- returns the filename of a chunk --> |
| <xsl:variable name="ischunk"> |
| <xsl:call-template name="chunk"/> |
| </xsl:variable> |
| |
| <xsl:variable name="fn"> |
| <xsl:apply-templates select="." mode="recursive-chunk-filename"/> |
| </xsl:variable> |
| |
| <xsl:if test="$ischunk != 0 and $fn != ''"> |
| <xsl:call-template name="dbhtml-dir"/> |
| </xsl:if> |
| |
| <xsl:value-of select="$fn"/> |
| <!-- You can't add the html.ext here because dbhtml filename= may already --> |
| <!-- have added it. It really does have to be handled in the recursive template --> |
| </xsl:template> |
| |
| <xsl:template match="*" mode="recursive-chunk-filename"> |
| <xsl:param name="recursive" select="false()"/> |
| |
| <!-- returns the filename of a chunk --> |
| <xsl:variable name="ischunk"> |
| <xsl:call-template name="chunk"/> |
| </xsl:variable> |
| |
| <xsl:variable name="dbhtml-filename"> |
| <xsl:call-template name="dbhtml-filename"/> |
| </xsl:variable> |
| |
| <xsl:variable name="filename"> |
| <xsl:choose> |
| <xsl:when test="$dbhtml-filename != ''"> |
| <xsl:value-of select="$dbhtml-filename"/> |
| </xsl:when> |
| <!-- if this is the root element, use the root.filename --> |
| <xsl:when test="not(parent::*) and $root.filename != ''"> |
| <xsl:value-of select="$root.filename"/> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:when> |
| <!-- if there's no dbhtml filename, and if we're to use IDs as --> |
| <!-- filenames, then use the ID to generate the filename. --> |
| <xsl:when test="@id and $use.id.as.filename != 0"> |
| <xsl:value-of select="@id"/> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:when> |
| <xsl:otherwise></xsl:otherwise> |
| </xsl:choose> |
| </xsl:variable> |
| |
| <xsl:choose> |
| <xsl:when test="$ischunk='0'"> |
| <!-- if called on something that isn't a chunk, walk up... --> |
| <xsl:choose> |
| <xsl:when test="count(parent::*)>0"> |
| <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> |
| <xsl:with-param name="recursive" select="$recursive"/> |
| </xsl:apply-templates> |
| </xsl:when> |
| <!-- unless there is no up, in which case return "" --> |
| <xsl:otherwise></xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| |
| <xsl:when test="not($recursive) and $filename != ''"> |
| <!-- if this chunk has an explicit name, use it --> |
| <xsl:value-of select="$filename"/> |
| </xsl:when> |
| |
| <xsl:when test="self::set"> |
| <xsl:value-of select="$root.filename"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:when> |
| |
| <xsl:when test="self::book"> |
| <xsl:text>bk</xsl:text> |
| <xsl:number level="any" format="01"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:when> |
| |
| <xsl:when test="self::article"> |
| <xsl:if test="/set"> |
| <!-- in a set, make sure we inherit the right book info... --> |
| <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> |
| <xsl:with-param name="recursive" select="true()"/> |
| </xsl:apply-templates> |
| </xsl:if> |
| |
| <xsl:text>ar</xsl:text> |
| <xsl:number level="any" format="01" from="book"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:when> |
| |
| <xsl:when test="self::preface"> |
| <xsl:if test="/set"> |
| <!-- in a set, make sure we inherit the right book info... --> |
| <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> |
| <xsl:with-param name="recursive" select="true()"/> |
| </xsl:apply-templates> |
| </xsl:if> |
| |
| <xsl:text>pr</xsl:text> |
| <xsl:number level="any" format="01" from="book"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:when> |
| |
| <xsl:when test="self::chapter"> |
| <xsl:if test="/set"> |
| <!-- in a set, make sure we inherit the right book info... --> |
| <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> |
| <xsl:with-param name="recursive" select="true()"/> |
| </xsl:apply-templates> |
| </xsl:if> |
| |
| <xsl:text>ch</xsl:text> |
| <xsl:number level="any" format="01" from="book"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:when> |
| |
| <xsl:when test="self::appendix"> |
| <xsl:if test="/set"> |
| <!-- in a set, make sure we inherit the right book info... --> |
| <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> |
| <xsl:with-param name="recursive" select="true()"/> |
| </xsl:apply-templates> |
| </xsl:if> |
| |
| <xsl:text>ap</xsl:text> |
| <xsl:number level="any" format="a" from="book"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:when> |
| |
| <xsl:when test="self::part"> |
| <xsl:choose> |
| <xsl:when test="/set"> |
| <!-- in a set, make sure we inherit the right book info... --> |
| <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> |
| <xsl:with-param name="recursive" select="true()"/> |
| </xsl:apply-templates> |
| </xsl:when> |
| <xsl:otherwise> |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| <xsl:text>pt</xsl:text> |
| <xsl:number level="any" format="01" from="book"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:when> |
| |
| <xsl:when test="self::reference"> |
| <xsl:choose> |
| <xsl:when test="/set"> |
| <!-- in a set, make sure we inherit the right book info... --> |
| <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> |
| <xsl:with-param name="recursive" select="true()"/> |
| </xsl:apply-templates> |
| </xsl:when> |
| <xsl:otherwise> |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| <xsl:text>rn</xsl:text> |
| <xsl:number level="any" format="01" from="book"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:when> |
| |
| <xsl:when test="self::refentry"> |
| <xsl:choose> |
| <xsl:when test="parent::reference"> |
| <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> |
| <xsl:with-param name="recursive" select="true()"/> |
| </xsl:apply-templates> |
| </xsl:when> |
| <xsl:otherwise> |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| <xsl:text>re</xsl:text> |
| <xsl:number level="any" format="01" from="book"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:when> |
| |
| <xsl:when test="self::colophon"> |
| <xsl:choose> |
| <xsl:when test="/set"> |
| <!-- in a set, make sure we inherit the right book info... --> |
| <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> |
| <xsl:with-param name="recursive" select="true()"/> |
| </xsl:apply-templates> |
| </xsl:when> |
| <xsl:otherwise> |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| <xsl:text>co</xsl:text> |
| <xsl:number level="any" format="01" from="book"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:when> |
| |
| <xsl:when test="self::sect1 |
| or self::sect2 |
| or self::sect3 |
| or self::sect4 |
| or self::sect5 |
| or self::section"> |
| <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> |
| <xsl:with-param name="recursive" select="true()"/> |
| </xsl:apply-templates> |
| <xsl:text>s</xsl:text> |
| <xsl:number format="01"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:when> |
| |
| <xsl:when test="self::bibliography"> |
| <xsl:choose> |
| <xsl:when test="/set"> |
| <!-- in a set, make sure we inherit the right book info... --> |
| <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> |
| <xsl:with-param name="recursive" select="true()"/> |
| </xsl:apply-templates> |
| </xsl:when> |
| <xsl:otherwise> |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| <xsl:text>bi</xsl:text> |
| <xsl:number level="any" format="01" from="book"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:when> |
| |
| <xsl:when test="self::glossary"> |
| <xsl:choose> |
| <xsl:when test="/set"> |
| <!-- in a set, make sure we inherit the right book info... --> |
| <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> |
| <xsl:with-param name="recursive" select="true()"/> |
| </xsl:apply-templates> |
| </xsl:when> |
| <xsl:otherwise> |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| <xsl:text>go</xsl:text> |
| <xsl:number level="any" format="01" from="book"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:when> |
| |
| <xsl:when test="self::index"> |
| <xsl:choose> |
| <xsl:when test="/set"> |
| <!-- in a set, make sure we inherit the right book info... --> |
| <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> |
| <xsl:with-param name="recursive" select="true()"/> |
| </xsl:apply-templates> |
| </xsl:when> |
| <xsl:otherwise> |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| <xsl:text>ix</xsl:text> |
| <xsl:number level="any" format="01" from="book"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:when> |
| |
| <xsl:when test="self::setindex"> |
| <xsl:text>si</xsl:text> |
| <xsl:number level="any" format="01" from="set"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:when> |
| |
| <xsl:otherwise> |
| <xsl:text>chunk-filename-error-</xsl:text> |
| <xsl:value-of select="name(.)"/> |
| <xsl:number level="any" format="01" from="set"/> |
| <xsl:if test="not($recursive)"> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:if> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:template> |
| |
| <!-- ==================================================================== --> |
| |
| <xsl:template name="href.target.uri"> |
| <xsl:param name="object" select="."/> |
| <xsl:variable name="ischunk"> |
| <xsl:call-template name="chunk"> |
| <xsl:with-param name="node" select="$object"/> |
| </xsl:call-template> |
| </xsl:variable> |
| |
| <xsl:apply-templates mode="chunk-filename" select="$object"/> |
| |
| <xsl:if test="$ischunk='0'"> |
| <xsl:text>#</xsl:text> |
| <xsl:call-template name="object.id"> |
| <xsl:with-param name="object" select="$object"/> |
| </xsl:call-template> |
| </xsl:if> |
| </xsl:template> |
| |
| <xsl:template name="href.target"> |
| <xsl:param name="context" select="."/> |
| <xsl:param name="object" select="."/> |
| |
| <xsl:variable name="href.to.uri"> |
| <xsl:call-template name="href.target.uri"> |
| <xsl:with-param name="object" select="$object"/> |
| </xsl:call-template> |
| </xsl:variable> |
| |
| <xsl:variable name="href.from.uri"> |
| <xsl:call-template name="href.target.uri"> |
| <xsl:with-param name="object" select="$context"/> |
| </xsl:call-template> |
| </xsl:variable> |
| |
| <xsl:variable name="href.to"> |
| <xsl:call-template name="trim.common.uri.paths"> |
| <xsl:with-param name="uriA" select="$href.to.uri"/> |
| <xsl:with-param name="uriB" select="$href.from.uri"/> |
| <xsl:with-param name="return" select="'A'"/> |
| </xsl:call-template> |
| </xsl:variable> |
| |
| <xsl:variable name="href.from"> |
| <xsl:call-template name="trim.common.uri.paths"> |
| <xsl:with-param name="uriA" select="$href.to.uri"/> |
| <xsl:with-param name="uriB" select="$href.from.uri"/> |
| <xsl:with-param name="return" select="'B'"/> |
| </xsl:call-template> |
| </xsl:variable> |
| |
| <xsl:variable name="depth"> |
| <xsl:call-template name="count.uri.path.depth"> |
| <xsl:with-param name="filename" select="$href.from"/> |
| </xsl:call-template> |
| </xsl:variable> |
| |
| <xsl:variable name="href"> |
| <xsl:call-template name="copy-string"> |
| <xsl:with-param name="string" select="'../'"/> |
| <xsl:with-param name="count" select="$depth"/> |
| </xsl:call-template> |
| <xsl:value-of select="$href.to"/> |
| </xsl:variable> |
| |
| <!-- |
| <xsl:message> |
| <xsl:text>In </xsl:text> |
| <xsl:value-of select="name(.)"/> |
| <xsl:text> (</xsl:text> |
| <xsl:value-of select="$href.from"/> |
| <xsl:text>,</xsl:text> |
| <xsl:value-of select="$depth"/> |
| <xsl:text>) </xsl:text> |
| <xsl:value-of select="name($object)"/> |
| <xsl:text> href=</xsl:text> |
| <xsl:value-of select="$href"/> |
| </xsl:message> |
| --> |
| |
| <xsl:value-of select="$href"/> |
| </xsl:template> |
| |
| <!-- ==================================================================== --> |
| |
| <xsl:template name="html.head"> |
| <xsl:param name="prev" select="/foo"/> |
| <xsl:param name="next" select="/foo"/> |
| <xsl:variable name="this" select="."/> |
| <xsl:variable name="home" select="/*[1]"/> |
| <xsl:variable name="up" select="parent::*"/> |
| |
| <head> |
| <xsl:call-template name="system.head.content"/> |
| <xsl:call-template name="head.content"/> |
| <xsl:call-template name="user.head.content"/> |
| |
| <xsl:if test="$home"> |
| <link rel="home"> |
| <xsl:attribute name="href"> |
| <xsl:call-template name="href.target"> |
| <xsl:with-param name="object" select="$home"/> |
| </xsl:call-template> |
| </xsl:attribute> |
| <xsl:attribute name="title"> |
| <xsl:apply-templates select="$home" |
| mode="object.title.markup.textonly"/> |
| </xsl:attribute> |
| </link> |
| </xsl:if> |
| |
| <xsl:if test="$up"> |
| <link rel="up"> |
| <xsl:attribute name="href"> |
| <xsl:call-template name="href.target"> |
| <xsl:with-param name="object" select="$up"/> |
| </xsl:call-template> |
| </xsl:attribute> |
| <xsl:attribute name="title"> |
| <xsl:apply-templates select="$up" mode="object.title.markup.textonly"/> |
| </xsl:attribute> |
| </link> |
| </xsl:if> |
| |
| <xsl:if test="$prev"> |
| <link rel="previous"> |
| <xsl:attribute name="href"> |
| <xsl:call-template name="href.target"> |
| <xsl:with-param name="object" select="$prev"/> |
| </xsl:call-template> |
| </xsl:attribute> |
| <xsl:attribute name="title"> |
| <xsl:apply-templates select="$prev" mode="object.title.markup.textonly"/> |
| </xsl:attribute> |
| </link> |
| </xsl:if> |
| |
| <xsl:if test="$next"> |
| <link rel="next"> |
| <xsl:attribute name="href"> |
| <xsl:call-template name="href.target"> |
| <xsl:with-param name="object" select="$next"/> |
| </xsl:call-template> |
| </xsl:attribute> |
| <xsl:attribute name="title"> |
| <xsl:apply-templates select="$next" mode="object.title.markup.textonly"/> |
| </xsl:attribute> |
| </link> |
| </xsl:if> |
| |
| <xsl:if test="$html.extra.head.links != 0"> |
| <xsl:for-each select="//part |
| |//reference |
| |//preface |
| |//chapter |
| |//article |
| |//refentry |
| |//appendix[not(parent::article)]|appendix |
| |//glossary[not(parent::article)]|glossary |
| |//index[not(parent::article)]|index"> |
| <link rel="{local-name(.)}"> |
| <xsl:attribute name="href"> |
| <xsl:call-template name="href.target"> |
| <xsl:with-param name="context" select="$this"/> |
| <xsl:with-param name="object" select="."/> |
| </xsl:call-template> |
| </xsl:attribute> |
| <xsl:attribute name="title"> |
| <xsl:apply-templates select="." mode="object.title.markup.textonly"/> |
| </xsl:attribute> |
| </link> |
| </xsl:for-each> |
| |
| <xsl:for-each select="section|sect1|refsection|refsect1"> |
| <link> |
| <xsl:attribute name="rel"> |
| <xsl:choose> |
| <xsl:when test="local-name($this) = 'section' |
| or local-name($this) = 'refsection'"> |
| <xsl:value-of select="'subsection'"/> |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:value-of select="'section'"/> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:attribute> |
| <xsl:attribute name="href"> |
| <xsl:call-template name="href.target"> |
| <xsl:with-param name="context" select="$this"/> |
| <xsl:with-param name="object" select="."/> |
| </xsl:call-template> |
| </xsl:attribute> |
| <xsl:attribute name="title"> |
| <xsl:apply-templates select="." mode="object.title.markup.textonly"/> |
| </xsl:attribute> |
| </link> |
| </xsl:for-each> |
| |
| <xsl:for-each select="sect2|sect3|sect4|sect5|refsect2|refsect3"> |
| <link rel="subsection"> |
| <xsl:attribute name="href"> |
| <xsl:call-template name="href.target"> |
| <xsl:with-param name="context" select="$this"/> |
| <xsl:with-param name="object" select="."/> |
| </xsl:call-template> |
| </xsl:attribute> |
| <xsl:attribute name="title"> |
| <xsl:apply-templates select="." mode="object.title.markup.textonly"/> |
| </xsl:attribute> |
| </link> |
| </xsl:for-each> |
| </xsl:if> |
| </head> |
| </xsl:template> |
| |
| <!-- ==================================================================== --> |
| |
| <xsl:template name="header.navigation"> |
| <xsl:param name="prev" select="/foo"/> |
| <xsl:param name="next" select="/foo"/> |
| <xsl:param name="nav.context"/> |
| |
| <xsl:variable name="home" select="/*[1]"/> |
| <xsl:variable name="up" select="parent::*"/> |
| |
| <xsl:variable name="row1" select="$navig.showtitles != 0"/> |
| <xsl:variable name="row2" select="count($prev) > 0 |
| or (count($up) > 0 |
| and $up != $home |
| and $navig.showtitles != 0) |
| or count($next) > 0"/> |
| |
| <xsl:if test="$suppress.navigation = '0' and $suppress.header.navigation = '0'"> |
| <div class="navheader"> |
| <xsl:if test="$row1 or $row2"> |
| <table width="100%" summary="Navigation header"> |
| <xsl:if test="$row1"> |
| <tr> |
| <th colspan="3" align="center"> |
| <xsl:apply-templates select="." mode="object.title.markup"/> |
| </th> |
| </tr> |
| </xsl:if> |
| |
| <xsl:if test="$row2"> |
| <tr> |
| <td width="20%" align="left"> |
| <xsl:if test="count($prev)>0"> |
| <a accesskey="p"> |
| <xsl:attribute name="href"> |
| <xsl:call-template name="href.target"> |
| <xsl:with-param name="object" select="$prev"/> |
| </xsl:call-template> |
| </xsl:attribute> |
| <xsl:call-template name="navig.content"> |
| <xsl:with-param name="direction" select="'prev'"/> |
| </xsl:call-template> |
| </a> |
| </xsl:if> |
| <xsl:text> </xsl:text> |
| </td> |
| <th width="60%" align="center"> |
| <xsl:choose> |
| <xsl:when test="count($up) > 0 |
| and $up != $home |
| and $navig.showtitles != 0"> |
| <xsl:apply-templates select="$up" mode="object.title.markup"/> |
| </xsl:when> |
| <xsl:otherwise> </xsl:otherwise> |
| </xsl:choose> |
| </th> |
| <td width="20%" align="right"> |
| <xsl:text> </xsl:text> |
| <xsl:if test="count($next)>0"> |
| <a accesskey="n"> |
| <xsl:attribute name="href"> |
| <xsl:call-template name="href.target"> |
| <xsl:with-param name="object" select="$next"/> |
| </xsl:call-template> |
| </xsl:attribute> |
| <xsl:call-template name="navig.content"> |
| <xsl:with-param name="direction" select="'next'"/> |
| </xsl:call-template> |
| </a> |
| </xsl:if> |
| </td> |
| </tr> |
| </xsl:if> |
| </table> |
| </xsl:if> |
| <xsl:if test="$header.rule != 0"> |
| <hr/> |
| </xsl:if> |
| </div> |
| </xsl:if> |
| </xsl:template> |
| |
| <!-- ==================================================================== --> |
| |
| <xsl:template name="footer.navigation"> |
| <xsl:param name="prev" select="/foo"/> |
| <xsl:param name="next" select="/foo"/> |
| <xsl:param name="nav.context"/> |
| |
| <xsl:variable name="home" select="/*[1]"/> |
| <xsl:variable name="up" select="parent::*"/> |
| |
| <xsl:variable name="row1" select="count($prev) > 0 |
| or count($up) > 0 |
| or count($next) > 0"/> |
| |
| <xsl:variable name="row2" select="($prev and $navig.showtitles != 0) |
| or ($home != . or $nav.context = 'toc') |
| or ($chunk.tocs.and.lots != 0 |
| and $nav.context != 'toc') |
| or ($next and $navig.showtitles != 0)"/> |
| |
| <xsl:if test="$suppress.navigation = '0' and $suppress.footer.navigation = '0'"> |
| <div class="navfooter"> |
| <xsl:if test="$footer.rule != 0"> |
| <hr/> |
| </xsl:if> |
| |
| <xsl:if test="$row1 or $row2"> |
| <table width="100%" summary="Navigation footer"> |
| <xsl:if test="$row1"> |
| <tr> |
| <td width="40%" align="left"> |
| <xsl:if test="count($prev)>0"> |
| <a accesskey="p"> |
| <xsl:attribute name="href"> |
| <xsl:call-template name="href.target"> |
| <xsl:with-param name="object" select="$prev"/> |
| </xsl:call-template> |
| </xsl:attribute> |
| <xsl:call-template name="navig.content"> |
| <xsl:with-param name="direction" select="'prev'"/> |
| </xsl:call-template> |
| </a> |
| </xsl:if> |
| <xsl:text> </xsl:text> |
| </td> |
| <td width="20%" align="center"> |
| <xsl:choose> |
| <xsl:when test="count($up)>0"> |
| <a accesskey="u"> |
| <xsl:attribute name="href"> |
| <xsl:call-template name="href.target"> |
| <xsl:with-param name="object" select="$up"/> |
| </xsl:call-template> |
| </xsl:attribute> |
| <xsl:call-template name="navig.content"> |
| <xsl:with-param name="direction" select="'up'"/> |
| </xsl:call-template> |
| </a> |
| </xsl:when> |
| <xsl:otherwise> </xsl:otherwise> |
| </xsl:choose> |
| </td> |
| <td width="40%" align="right"> |
| <xsl:text> </xsl:text> |
| <xsl:if test="count($next)>0"> |
| <a accesskey="n"> |
| <xsl:attribute name="href"> |
| <xsl:call-template name="href.target"> |
| <xsl:with-param name="object" select="$next"/> |
| </xsl:call-template> |
| </xsl:attribute> |
| <xsl:call-template name="navig.content"> |
| <xsl:with-param name="direction" select="'next'"/> |
| </xsl:call-template> |
| </a> |
| </xsl:if> |
| </td> |
| </tr> |
| </xsl:if> |
| |
| <xsl:if test="$row2"> |
| <tr> |
| <td width="40%" align="left" valign="top"> |
| <xsl:if test="$navig.showtitles != 0"> |
| <xsl:apply-templates select="$prev" mode="object.title.markup"/> |
| </xsl:if> |
| <xsl:text> </xsl:text> |
| </td> |
| <td width="20%" align="center"> |
| <xsl:choose> |
| <xsl:when test="$home != . or $nav.context = 'toc'"> |
| <a accesskey="h"> |
| <xsl:attribute name="href"> |
| <xsl:call-template name="href.target"> |
| <xsl:with-param name="object" select="$home"/> |
| </xsl:call-template> |
| </xsl:attribute> |
| <xsl:call-template name="navig.content"> |
| <xsl:with-param name="direction" select="'home'"/> |
| </xsl:call-template> |
| </a> |
| <xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'"> |
| <xsl:text> | </xsl:text> |
| </xsl:if> |
| </xsl:when> |
| <xsl:otherwise> </xsl:otherwise> |
| </xsl:choose> |
| |
| <xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'"> |
| <a accesskey="t"> |
| <xsl:attribute name="href"> |
| <xsl:apply-templates select="/*[1]" |
| mode="recursive-chunk-filename"/> |
| <xsl:text>-toc</xsl:text> |
| <xsl:value-of select="$html.ext"/> |
| </xsl:attribute> |
| <xsl:call-template name="gentext"> |
| <xsl:with-param name="key" select="'nav-toc'"/> |
| </xsl:call-template> |
| </a> |
| </xsl:if> |
| </td> |
| <td width="40%" align="right" valign="top"> |
| <xsl:text> </xsl:text> |
| <xsl:if test="$navig.showtitles != 0"> |
| <xsl:apply-templates select="$next" mode="object.title.markup"/> |
| </xsl:if> |
| </td> |
| </tr> |
| </xsl:if> |
| </table> |
| </xsl:if> |
| </div> |
| </xsl:if> |
| </xsl:template> |
| |
| <!-- ==================================================================== --> |
| |
| <xsl:template name="navig.content"> |
| <xsl:param name="direction" select="next"/> |
| <xsl:variable name="navtext"> |
| <xsl:choose> |
| <xsl:when test="$direction = 'prev'"> |
| <xsl:call-template name="gentext.nav.prev"/> |
| </xsl:when> |
| <xsl:when test="$direction = 'next'"> |
| <xsl:call-template name="gentext.nav.next"/> |
| </xsl:when> |
| <xsl:when test="$direction = 'up'"> |
| <xsl:call-template name="gentext.nav.up"/> |
| </xsl:when> |
| <xsl:when test="$direction = 'home'"> |
| <xsl:call-template name="gentext.nav.home"/> |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:text>xxx</xsl:text> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:variable> |
| |
| <xsl:choose> |
| <xsl:when test="$navig.graphics != 0"> |
| <img> |
| <xsl:attribute name="src"> |
| <xsl:value-of select="$navig.graphics.path"/> |
| <xsl:value-of select="$direction"/> |
| <xsl:value-of select="$navig.graphics.extension"/> |
| </xsl:attribute> |
| <xsl:attribute name="alt"> |
| <xsl:value-of select="$navtext"/> |
| </xsl:attribute> |
| </img> |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:value-of select="$navtext"/> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:template> |
| |
| <!-- ==================================================================== --> |
| |
| <xsl:template match="processing-instruction('dbhtml')"> |
| <!-- nop --> |
| </xsl:template> |
| |
| <!-- ==================================================================== --> |
| |
| <xsl:template name="chunk-element-content"> |
| <xsl:param name="prev"/> |
| <xsl:param name="next"/> |
| <xsl:param name="nav.context"/> |
| <xsl:param name="content"> |
| <xsl:apply-imports/> |
| </xsl:param> |
| |
| <html> |
| <xsl:call-template name="html.head"> |
| <xsl:with-param name="prev" select="$prev"/> |
| <xsl:with-param name="next" select="$next"/> |
| </xsl:call-template> |
| |
| <body> |
| <xsl:call-template name="body.attributes"/> |
| <xsl:call-template name="user.header.navigation"/> |
| |
| <xsl:call-template name="header.navigation"> |
| <xsl:with-param name="prev" select="$prev"/> |
| <xsl:with-param name="next" select="$next"/> |
| <xsl:with-param name="nav.context" select="$nav.context"/> |
| </xsl:call-template> |
| |
| <xsl:call-template name="user.header.content"/> |
| |
| <xsl:copy-of select="$content"/> |
| |
| <xsl:call-template name="user.footer.content"/> |
| |
| <xsl:call-template name="footer.navigation"> |
| <xsl:with-param name="prev" select="$prev"/> |
| <xsl:with-param name="next" select="$next"/> |
| <xsl:with-param name="nav.context" select="$nav.context"/> |
| </xsl:call-template> |
| |
| <xsl:call-template name="user.footer.navigation"/> |
| </body> |
| </html> |
| </xsl:template> |
| |
| </xsl:stylesheet> |