mirror of
https://github.com/brl/mutter.git
synced 2024-11-26 18:11:05 -05:00
5e1ccaeb60
• Make the manual a DevHelp book • Make the generation of PDFs of the cookbook and the manual optional • Consequently, make the hard dependency on jw optional • Clean up the checks and build for the additional documentation
155 lines
5.5 KiB
XML
155 lines
5.5 KiB
XML
<?xml version='1.0'?>
|
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
version='1.0'
|
|
xmlns="http://www.devhelp.net/book"
|
|
exclude-result-prefixes="#default">
|
|
|
|
<xsl:template name="generate.devhelp">
|
|
<xsl:call-template name="write.chunk">
|
|
<xsl:with-param name="filename">
|
|
<xsl:choose>
|
|
<xsl:when test="$gtkdoc.bookname">
|
|
<xsl:value-of select="$gtkdoc.bookname"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:text>book</xsl:text>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<xsl:text>.devhelp</xsl:text>
|
|
</xsl:with-param>
|
|
<xsl:with-param name="method" select="'xml'"/>
|
|
<xsl:with-param name="indent" select="'yes'"/>
|
|
<xsl:with-param name="encoding" select="'utf-8'"/>
|
|
<xsl:with-param name="content">
|
|
<xsl:call-template name="devhelp"/>
|
|
</xsl:with-param>
|
|
</xsl:call-template>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="devhelp">
|
|
<xsl:variable name="title">
|
|
<xsl:apply-templates select="." mode="generate.devhelp.toc.title.mode"/>
|
|
</xsl:variable>
|
|
<xsl:variable name="link">
|
|
<xsl:call-template name="href.target"/>
|
|
</xsl:variable>
|
|
<xsl:variable name="author">
|
|
<xsl:if test="articleinfo|bookinfo">
|
|
<xsl:apply-templates mode="generate.devhelp.authors"
|
|
select="articleinfo|bookinfo"/>
|
|
</xsl:if>
|
|
</xsl:variable>
|
|
<xsl:variable name="toc.nodes" select="part|reference|preface|chapter|
|
|
appendix|article|bibliography|
|
|
glossary|index|refentry|
|
|
bridgehead|sect1"/>
|
|
|
|
<book title="{$title}" link="{$link}" author="{$author}" name="{$gtkdoc.bookname}">
|
|
<xsl:if test="$toc.nodes">
|
|
<chapters>
|
|
<xsl:apply-templates select="$toc.nodes"
|
|
mode="generate.devhelp.toc.mode"/>
|
|
</chapters>
|
|
</xsl:if>
|
|
<functions>
|
|
<xsl:apply-templates select="//refsect1"
|
|
mode="generate.devhelp.constructor.index.mode"/>
|
|
<xsl:apply-templates select="//refsect2"
|
|
mode="generate.devhelp.index.mode"/>
|
|
</functions>
|
|
</book>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="*" mode="generate.devhelp.toc.mode">
|
|
<xsl:variable name="title">
|
|
<xsl:apply-templates select="." mode="generate.devhelp.toc.title.mode"/>
|
|
</xsl:variable>
|
|
<xsl:variable name="target">
|
|
<xsl:variable name="anchor" select="title/anchor"/>
|
|
<xsl:choose>
|
|
<xsl:when test="$anchor">
|
|
<xsl:call-template name="href.target">
|
|
<xsl:with-param name="object" select="$anchor"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:call-template name="href.target"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<sub name="{$title}" link="{$target}">
|
|
<xsl:apply-templates select="section|sect1|
|
|
refentry|refsect|
|
|
bridgehead|part|chapter"
|
|
mode="generate.devhelp.toc.mode"/>
|
|
</sub>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="*" mode="generate.devhelp.index.mode">
|
|
<xsl:variable name="title" select="title"/>
|
|
<xsl:variable name="anchor" select="title/anchor"/>
|
|
<xsl:variable name="target">
|
|
<xsl:choose>
|
|
<xsl:when test="$anchor">
|
|
<xsl:call-template name="href.target">
|
|
<xsl:with-param name="object" select="$anchor"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:call-template name="href.target"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
<function name="{$title}" link="{$target}"/>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="*" mode="generate.devhelp.constructor.index.mode">
|
|
<xsl:variable name="title" select="title"/>
|
|
<xsl:variable name="anchor" select="title/anchor"/>
|
|
<xsl:variable name="target">
|
|
<xsl:choose>
|
|
<xsl:when test="$anchor">
|
|
<xsl:call-template name="href.target">
|
|
<xsl:with-param name="object" select="$anchor"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:call-template name="href.target"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
<xsl:if test="$title='Constructor'">
|
|
<xsl:variable name ="constructor" select="programlisting//methodname"/>
|
|
<function name="{$constructor}" link="{$target}"/>
|
|
</xsl:if>
|
|
</xsl:template>
|
|
|
|
<!-- get title -->
|
|
<xsl:template match="article" mode="generate.devhelp.toc.title.mode">
|
|
<xsl:value-of select="articleinfo/title"/>
|
|
</xsl:template>
|
|
<xsl:template match="book" mode="generate.devhelp.toc.title.mode">
|
|
<xsl:value-of select="bookinfo/title"/>
|
|
</xsl:template>
|
|
<xsl:template match="refentry" mode="generate.devhelp.toc.title.mode">
|
|
<xsl:value-of select="refnamediv/refname"/>
|
|
</xsl:template>
|
|
<xsl:template match="*" mode="generate.devhelp.toc.title.mode">
|
|
<xsl:value-of select="title"/>
|
|
</xsl:template>
|
|
|
|
<!-- generate list of authors ... -->
|
|
<xsl:template match="articleinfo|bookinfo" mode="generate.devhelp.authors">
|
|
<xsl:for-each select="authorgroup/author">
|
|
<xsl:value-of select="firstname"/>
|
|
<xsl:text> </xsl:text>
|
|
<xsl:value-of select="surname"/>
|
|
<xsl:if test="not(last())">
|
|
<xsl:text>, </xsl:text>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:template>
|
|
|
|
</xsl:stylesheet>
|