You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
738 lines
22 KiB
738 lines
22 KiB
12 years ago
|
<?xml version="1.0" encoding="UTF-8"?>
|
||
|
<xsl:stylesheet
|
||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||
|
xmlns:exsl="http://exslt.org/common"
|
||
|
extension-element-prefixes="exsl"
|
||
|
exclude-result-prefixes="exsl"
|
||
|
version="1.0">
|
||
|
|
||
|
<xsl:output
|
||
|
method="xml" indent="yes"
|
||
|
doctype-public="-//OASIS//DTD DocBook XML V4.5//EN"
|
||
|
doctype-system="http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"/>
|
||
|
|
||
|
<xsl:template name="write.api.overview.contents">
|
||
|
|
||
|
<xsl:if test="count(ancestor::*/sectiondef[memberdef/@kind = 'variable' or memberdef/@kind = 'typedef']) > 0">
|
||
|
<section>
|
||
|
<title>Variable and Type Definitions</title>
|
||
|
|
||
|
<xsl:for-each select="ancestor::*/sectiondef[memberdef/@kind = 'variable' or memberdef/@kind = 'typedef']">
|
||
|
<section>
|
||
|
<title>
|
||
|
<xsl:value-of select="header"/>
|
||
|
</title>
|
||
|
|
||
|
<xsl:apply-templates select="description"/>
|
||
|
<xsl:apply-templates select="memberdef[@kind = 'variable' or @kind = 'typedef']"/>
|
||
|
</section>
|
||
|
</xsl:for-each>
|
||
|
</section>
|
||
|
</xsl:if>
|
||
|
|
||
|
<xsl:if test="count(ancestor::*/innerclass) > 0">
|
||
|
<section>
|
||
|
<title>Structure Definitions</title>
|
||
|
|
||
|
<xsl:for-each select="ancestor::*/innerclass">
|
||
|
<xsl:apply-templates select="ancestor::*/compounddef[@id = current()/@refid]"/>
|
||
|
</xsl:for-each>
|
||
|
</section>
|
||
|
</xsl:if>
|
||
|
|
||
|
<xsl:if test="count(ancestor::*/sectiondef[memberdef/@kind = 'define' or @kind = 'define']) > 0">
|
||
|
<section>
|
||
|
<title>Macro Definitions</title>
|
||
|
|
||
|
<xsl:for-each select="ancestor::*/sectiondef[memberdef/@kind = 'define' or @kind = 'define']">
|
||
|
<section>
|
||
|
<title>
|
||
|
<xsl:value-of select="header"/>
|
||
|
</title>
|
||
|
|
||
|
<xsl:apply-templates select="description"/>
|
||
|
<xsl:apply-templates select="memberdef[@kind = 'define']"/>
|
||
|
</section>
|
||
|
</xsl:for-each>
|
||
|
</section>
|
||
|
</xsl:if>
|
||
|
|
||
|
<xsl:if test="count(ancestor::*/sectiondef[memberdef/@kind = 'function']) > 0">
|
||
|
<section>
|
||
|
<title>Function Definitions</title>
|
||
|
|
||
|
<xsl:for-each select="ancestor::*/sectiondef[memberdef/@kind = 'function']">
|
||
|
<section>
|
||
|
<title>
|
||
|
<xsl:value-of select="header"/>
|
||
|
</title>
|
||
|
|
||
|
<xsl:apply-templates select="description"/>
|
||
|
<xsl:apply-templates select="memberdef[@kind = 'function']"/>
|
||
|
</section>
|
||
|
</xsl:for-each>
|
||
|
</section>
|
||
|
</xsl:if>
|
||
|
|
||
|
<xsl:if test="count(ancestor::*/sectiondef[@kind = 'enum']) > 0">
|
||
|
<section>
|
||
|
<title>Enumeration Definitions</title>
|
||
|
|
||
|
<xsl:apply-templates select="ancestor::*/sectiondef[@kind = 'enum']"/>
|
||
|
</section>
|
||
|
</xsl:if>
|
||
|
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="compounddef">
|
||
|
<!-- Discard compounddef elements unless a later template matches -->
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="compounddef[@kind = 'struct' or @kind = 'union']">
|
||
|
<section id="{@id}" xreflabel="{compoundname}">
|
||
|
<title>
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="@kind = 'struct'">
|
||
|
<xsl:text>Struct </xsl:text>
|
||
|
</xsl:when>
|
||
|
<xsl:when test="@kind = 'union'">
|
||
|
<xsl:text>Union </xsl:text>
|
||
|
</xsl:when>
|
||
|
</xsl:choose>
|
||
|
|
||
|
<xsl:value-of select="compoundname"/>
|
||
|
</title>
|
||
|
|
||
|
<xsl:apply-templates select="detaileddescription"/>
|
||
|
|
||
|
<xsl:for-each select="sectiondef[@kind = 'public-attrib']">
|
||
|
<informaltable tabstyle="striped">
|
||
|
<tgroup cols="3">
|
||
|
<thead>
|
||
|
<row>
|
||
|
<entry>Type</entry>
|
||
|
<entry>Name</entry>
|
||
|
<entry>Description</entry>
|
||
|
</row>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<xsl:for-each select="memberdef">
|
||
|
<row id="{@id}" xreflabel="{name}">
|
||
|
<entry>
|
||
|
<xsl:apply-templates select="type"/>
|
||
|
</entry>
|
||
|
<entry>
|
||
|
<xsl:value-of select="name"/>
|
||
|
<xsl:if test="starts-with(argsstring, '[')">
|
||
|
<xsl:text>[]</xsl:text>
|
||
|
</xsl:if>
|
||
|
</entry>
|
||
|
<entry>
|
||
|
<xsl:apply-templates select="detaileddescription" mode="struct"/>
|
||
|
</entry>
|
||
|
</row>
|
||
|
</xsl:for-each>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</informaltable>
|
||
|
<para> </para>
|
||
|
</xsl:for-each>
|
||
|
</section>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="memberdef[@kind = 'function']">
|
||
|
<section id="{@id}" xreflabel="{name}">
|
||
|
<title> Function <xsl:value-of select="name"/>() </title>
|
||
|
|
||
|
<para>
|
||
|
<emphasis role="italic">
|
||
|
<xsl:value-of select="briefdescription"/>
|
||
|
</emphasis>
|
||
|
</para>
|
||
|
|
||
|
<programlisting language="c">
|
||
|
<xsl:value-of select="definition"/>
|
||
|
<xsl:text> 		</xsl:text>
|
||
|
<xsl:apply-templates select="argsstring"/>
|
||
|
</programlisting>
|
||
|
|
||
|
<xsl:apply-templates select="detaileddescription"/>
|
||
|
|
||
|
<para> </para>
|
||
|
</section>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="memberdef[@kind = 'enum']">
|
||
|
<section id="{@id}" xreflabel="{name}">
|
||
|
<title> Enum <xsl:value-of select="name"/> </title>
|
||
|
|
||
|
<xsl:apply-templates select="detaileddescription"/>
|
||
|
|
||
|
<informaltable tabstyle="striped">
|
||
|
<tgroup cols="2">
|
||
|
<thead>
|
||
|
<row>
|
||
|
<entry>Enum Value</entry>
|
||
|
<entry>Description</entry>
|
||
|
</row>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<xsl:for-each select="enumvalue">
|
||
|
<row>
|
||
|
<entry>
|
||
|
<para id="{@id}" xreflabel="{name}">
|
||
|
<xsl:value-of select="name"/>
|
||
|
</para>
|
||
|
</entry>
|
||
|
<entry>
|
||
|
<xsl:apply-templates select="detaileddescription"/>
|
||
|
</entry>
|
||
|
</row>
|
||
|
</xsl:for-each>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</informaltable>
|
||
|
|
||
|
<para> </para>
|
||
|
</section>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="memberdef[@kind = 'define']">
|
||
|
<section id="{@id}" xreflabel="{name}">
|
||
|
<title> Macro <xsl:value-of select="name"/> </title>
|
||
|
|
||
|
<programlisting language="c">
|
||
|
<xsl:text>#define </xsl:text>
|
||
|
<xsl:value-of select="name"/>
|
||
|
<xsl:if test="count(param) > 0">
|
||
|
<xsl:text>(</xsl:text>
|
||
|
<xsl:for-each select="param/defname">
|
||
|
<xsl:if test="position() > 1">
|
||
|
<xsl:text>, </xsl:text>
|
||
|
</xsl:if>
|
||
|
<xsl:value-of select="."/>
|
||
|
</xsl:for-each>
|
||
|
<xsl:text>)</xsl:text>
|
||
|
</xsl:if>
|
||
|
<xsl:text> </xsl:text>
|
||
|
|
||
|
<!-- Split long macro definitions across multiple lines -->
|
||
|
<xsl:if test="(string-length(initializer) > 50) or (count(param) > 0)">
|
||
|
<xsl:text>\ 		</xsl:text>
|
||
|
</xsl:if>
|
||
|
|
||
|
<xsl:value-of select="initializer"/>
|
||
|
</programlisting>
|
||
|
|
||
|
<xsl:apply-templates select="detaileddescription"/>
|
||
|
|
||
|
<para> </para>
|
||
|
</section>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="memberdef[@kind = 'variable' or @kind = 'typedef']">
|
||
|
<section id="{@id}" xreflabel="{name}">
|
||
|
<title>
|
||
|
<!-- Doxygen gets confused and thinks function pointer type definitions
|
||
|
are variables, so we need to map them to this common section and
|
||
|
check the definition to see which of the two it is. -->
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="contains(definition,'typedef')">
|
||
|
<xsl:text>Type </xsl:text>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:otherwise>
|
||
|
<xsl:text>Variable </xsl:text>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
|
||
|
<xsl:value-of select="name"/>
|
||
|
</title>
|
||
|
|
||
|
<programlisting language="c">
|
||
|
<xsl:value-of select="definition"/>
|
||
|
</programlisting>
|
||
|
|
||
|
<xsl:apply-templates select="detaileddescription"/>
|
||
|
|
||
|
<para> </para>
|
||
|
</section>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="sectiondef">
|
||
|
<para>
|
||
|
<xsl:value-of select="description"/>
|
||
|
</para>
|
||
|
|
||
|
<xsl:apply-templates select="memberdef"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="simplesect" mode="struct">
|
||
|
<footnote>
|
||
|
<xsl:apply-templates select="para"/>
|
||
|
</footnote>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="simplesect">
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="@kind = 'warning'">
|
||
|
<warning>
|
||
|
<title>Warning</title>
|
||
|
<xsl:apply-templates select="para"/>
|
||
|
</warning>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:when test="@kind = 'return'">
|
||
|
<note>
|
||
|
<title>Returns</title>
|
||
|
<xsl:apply-templates select="para"/>
|
||
|
</note>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:when test="@kind = 'pre'">
|
||
|
<note>
|
||
|
<title>Precondition</title>
|
||
|
<xsl:apply-templates select="para"/>
|
||
|
</note>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:when test="@kind = 'par'">
|
||
|
<note>
|
||
|
<title>
|
||
|
<xsl:value-of select="title"/>
|
||
|
</title>
|
||
|
<xsl:apply-templates select="para"/>
|
||
|
</note>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:when test="@kind = 'see'">
|
||
|
<note>
|
||
|
<title>See also</title>
|
||
|
<xsl:apply-templates select="para"/>
|
||
|
</note>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:when test="@kind = 'note'">
|
||
|
<!-- Notes can have special prefix keywords to transform them into
|
||
|
special styles for training documents ("AlfonsoNotes(TM)") -->
|
||
|
<xsl:variable name="note.prefix" select="substring-before(para[1]/text(), ' ')"/>
|
||
|
|
||
|
<note>
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="$note.prefix = 'TODO:'">
|
||
|
<xsl:attribute name="role">todo</xsl:attribute>
|
||
|
<title>To Do</title>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:when test="$note.prefix = 'TIP:'">
|
||
|
<xsl:attribute name="role">tip</xsl:attribute>
|
||
|
<title>Tip</title>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:when test="$note.prefix = 'INFO:'">
|
||
|
<xsl:attribute name="role">info</xsl:attribute>
|
||
|
<title>Info</title>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:when test="$note.prefix = 'RESULT:'">
|
||
|
<xsl:attribute name="role">result</xsl:attribute>
|
||
|
<title>Result</title>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:when test="$note.prefix = 'EXECUTE:'">
|
||
|
<xsl:attribute name="role">execute</xsl:attribute>
|
||
|
<title>Execute</title>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:when test="$note.prefix = 'WARNING:'">
|
||
|
<xsl:attribute name="role">warning</xsl:attribute>
|
||
|
<title>Warning</title>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:otherwise/>
|
||
|
</xsl:choose>
|
||
|
|
||
|
<xsl:apply-templates select="para"/>
|
||
|
</note>
|
||
|
</xsl:when>
|
||
|
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Strip off the special note type prefix from the special training document
|
||
|
style notes ("AlfonsoNotes(TM)") if one is present. -->
|
||
|
<xsl:template match="para[parent::simplesect/@kind='note']/text()">
|
||
|
<xsl:variable name="note.prefix" select="substring-before(., ' ')"/>
|
||
|
<xsl:variable name="note.content" select="substring-after(., ' ')"/>
|
||
|
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="$note.prefix = 'TODO:'">
|
||
|
<xsl:value-of select="$note.content"/>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:when test="$note.prefix = 'TIP:'">
|
||
|
<xsl:value-of select="$note.content"/>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:when test="$note.prefix = 'INFO:'">
|
||
|
<xsl:value-of select="$note.content"/>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:when test="$note.prefix = 'RESULT:'">
|
||
|
<xsl:value-of select="$note.content"/>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:when test="$note.prefix = 'EXECUTE:'">
|
||
|
<xsl:value-of select="$note.content"/>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:when test="$note.prefix = 'WARNING:'">
|
||
|
<xsl:value-of select="$note.content"/>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:otherwise>
|
||
|
<xsl:value-of select="."/>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="parameterlist[@kind = 'param']">
|
||
|
<table tabstyle="striped">
|
||
|
<title>Parameters</title>
|
||
|
<tgroup cols="3">
|
||
|
<thead>
|
||
|
<row>
|
||
|
<entry>Data Direction</entry>
|
||
|
<entry>Parameter Name</entry>
|
||
|
<entry>Description</entry>
|
||
|
</row>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<xsl:for-each select="parameteritem">
|
||
|
<row>
|
||
|
<xsl:apply-templates select="."/>
|
||
|
</row>
|
||
|
</xsl:for-each>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</table>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="parameterlist[@kind = 'retval']">
|
||
|
<table tabstyle="striped">
|
||
|
<title>Return Values</title>
|
||
|
<tgroup cols="2">
|
||
|
<thead>
|
||
|
<row>
|
||
|
<entry>Return Value</entry>
|
||
|
<entry>Description</entry>
|
||
|
</row>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<xsl:for-each select="parameteritem">
|
||
|
<row>
|
||
|
<xsl:apply-templates select="."/>
|
||
|
</row>
|
||
|
</xsl:for-each>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</table>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="parameteritem">
|
||
|
<xsl:if test="parent::parameterlist/@kind = 'param'">
|
||
|
<entry>
|
||
|
<para>
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="not(descendant::parametername/@direction)">
|
||
|
<emphasis role="italic">?</emphasis>
|
||
|
</xsl:when>
|
||
|
<xsl:otherwise>
|
||
|
<emphasis role="bold">[<xsl:value-of select="descendant::parametername/@direction"/>]</emphasis>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</para>
|
||
|
</entry>
|
||
|
</xsl:if>
|
||
|
|
||
|
<entry>
|
||
|
<para>
|
||
|
<xsl:value-of select="parameternamelist/parametername"/>
|
||
|
</para>
|
||
|
</entry>
|
||
|
|
||
|
<entry>
|
||
|
<xsl:apply-templates select="parameterdescription"/>
|
||
|
</entry>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="type">
|
||
|
<xsl:apply-templates/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="sect1">
|
||
|
<section id="{@id}" xreflabel="{title}">
|
||
|
<title>
|
||
|
<xsl:value-of select="title"/>
|
||
|
</title>
|
||
|
|
||
|
<xsl:apply-templates select="para"/>
|
||
|
<xsl:apply-templates select="sect2"/>
|
||
|
</section>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="sect2">
|
||
|
<section id="{@id}" xreflabel="{title}">
|
||
|
<title>
|
||
|
<xsl:value-of select="title"/>
|
||
|
</title>
|
||
|
|
||
|
<xsl:apply-templates select="para"/>
|
||
|
<xsl:apply-templates select="sect3"/>
|
||
|
</section>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="sect3">
|
||
|
<section id="{@id}" xreflabel="{title}">
|
||
|
<title>
|
||
|
<xsl:value-of select="title"/>
|
||
|
</title>
|
||
|
|
||
|
<xsl:apply-templates select="para"/>
|
||
|
</section>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="detaileddescription">
|
||
|
<xsl:apply-templates select="para"/>
|
||
|
<xsl:apply-templates select="sect1"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="para">
|
||
|
<para>
|
||
|
<xsl:apply-templates/>
|
||
|
</para>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="bold">
|
||
|
<emphasis role="bold">
|
||
|
<xsl:value-of select="."/>
|
||
|
</emphasis>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="emphasis">
|
||
|
<emphasis role="italic">
|
||
|
<xsl:value-of select="."/>
|
||
|
</emphasis>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="computeroutput">
|
||
|
<computeroutput>
|
||
|
<xsl:value-of select="."/>
|
||
|
</computeroutput>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="ulink">
|
||
|
<ulink url="{@url}">
|
||
|
<xsl:value-of select="."/>
|
||
|
</ulink>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="registered">
|
||
|
<xsl:text>®</xsl:text>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="copy">
|
||
|
<xsl:text>©</xsl:text>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="trademark">
|
||
|
<xsl:text>™</xsl:text>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="ref">
|
||
|
<xsl:choose>
|
||
|
<!-- Don't show links inside program listings -->
|
||
|
<xsl:when test="ancestor::programlisting">
|
||
|
<xsl:value-of select="."/>
|
||
|
</xsl:when>
|
||
|
|
||
|
<!-- Show links outside program listings -->
|
||
|
<xsl:otherwise>
|
||
|
<link linkend="{@refid}" xrefstyle="nopage">
|
||
|
<xsl:value-of select="text()"/>
|
||
|
</link>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="formula">
|
||
|
<equation>
|
||
|
<!-- LaTeX equation generation requires JLatexMath and its associated
|
||
|
FOP plugin, or you will get missing equations in the output -->
|
||
|
<latex align="center" xmlns="http://forge.scilab.org/p/jlatexmath">
|
||
|
<xsl:value-of select="."/>
|
||
|
</latex>
|
||
|
</equation>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="table">
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="caption">
|
||
|
<table tabstyle="striped">
|
||
|
<title>
|
||
|
<xsl:value-of select="caption"/>
|
||
|
</title>
|
||
|
<xsl:call-template name="write.table.content"/>
|
||
|
</table>
|
||
|
</xsl:when>
|
||
|
<xsl:otherwise>
|
||
|
<informaltable tabstyle="striped">
|
||
|
<xsl:call-template name="write.table.content"/>
|
||
|
</informaltable>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="write.table.content">
|
||
|
<tgroup cols="{@cols}">
|
||
|
<thead>
|
||
|
<xsl:for-each select="row[1]">
|
||
|
<row>
|
||
|
<xsl:for-each select="entry">
|
||
|
<entry>
|
||
|
<xsl:apply-templates select="."/>
|
||
|
</entry>
|
||
|
</xsl:for-each>
|
||
|
</row>
|
||
|
</xsl:for-each>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<xsl:for-each select="row[position() != 1]">
|
||
|
<row>
|
||
|
<xsl:for-each select="entry">
|
||
|
<entry>
|
||
|
<xsl:apply-templates select="."/>
|
||
|
</entry>
|
||
|
</xsl:for-each>
|
||
|
</row>
|
||
|
</xsl:for-each>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="itemizedlist">
|
||
|
<itemizedlist>
|
||
|
<xsl:apply-templates select="listitem"/>
|
||
|
</itemizedlist>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="orderedlist">
|
||
|
<orderedlist>
|
||
|
<xsl:apply-templates select="listitem"/>
|
||
|
</orderedlist>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="listitem">
|
||
|
<listitem>
|
||
|
<xsl:apply-templates/>
|
||
|
</listitem>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="programlisting">
|
||
|
<programlisting language="c">
|
||
|
<xsl:for-each select="codeline[position() > 1 or highlight]">
|
||
|
<xsl:apply-templates select="."/>
|
||
|
<xsl:text> </xsl:text>
|
||
|
</xsl:for-each>
|
||
|
</programlisting>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="highlight">
|
||
|
<emphasis>
|
||
|
<xsl:attribute name="role">
|
||
|
<xsl:value-of select="@class"/>
|
||
|
</xsl:attribute>
|
||
|
<xsl:apply-templates/>
|
||
|
</emphasis>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="sp[ancestor::codeline]">
|
||
|
<xsl:choose>
|
||
|
<!-- Need to check if this is the first part of the line - if so we may
|
||
|
need to strip off any leading <sp/> element indentation -->
|
||
|
<xsl:when test="ancestor::highlight = ancestor::codeline/highlight[1]">
|
||
|
<!-- Doxygen retains a level of indentation in some code fragments - obtain
|
||
|
the base indentation level by counting the leading <sp/> elements of the
|
||
|
first code line, and use that to remove the indentation on the rest -->
|
||
|
<xsl:variable name="leading.spaces" select="count(ancestor::programlisting/codeline[highlight][1]/highlight[1]/sp[not(preceding-sibling::text())])"/>
|
||
|
|
||
|
<xsl:if test="position() > $leading.spaces">
|
||
|
<xsl:text> </xsl:text>
|
||
|
</xsl:if>
|
||
|
</xsl:when>
|
||
|
|
||
|
<xsl:otherwise>
|
||
|
<xsl:text> </xsl:text>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="image">
|
||
|
<figure>
|
||
|
<title>
|
||
|
<xsl:value-of select="."/>
|
||
|
</title>
|
||
|
|
||
|
<mediaobject>
|
||
|
<imageobject>
|
||
|
<imagedata scalefit="1" width="{@width}">
|
||
|
<xsl:attribute name="fileref">html/<xsl:value-of select="@name"/></xsl:attribute>
|
||
|
</imagedata>
|
||
|
</imageobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="anchor">
|
||
|
<anchor id="{@id}"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="dot">
|
||
|
<!-- We get raw DOT syntax rather than a rendered image: write the DOT code
|
||
|
to a new unique file, and make a image reference to a SVG version of
|
||
|
that file. The build system should then call dot to render all generated
|
||
|
DOT files into their SVG equivalents before rendering the PDF. -->
|
||
|
<xsl:variable name="filename" select="generate-id(.)" />
|
||
|
<exsl:document href="{$filename}.dot" method="text">
|
||
|
<xsl:value-of select="." />
|
||
|
</exsl:document>
|
||
|
|
||
|
<figure>
|
||
|
<title>
|
||
|
<xsl:value-of select="ancestor::*/title"/>
|
||
|
</title>
|
||
|
<mediaobject>
|
||
|
<imageobject>
|
||
|
<imagedata format="SVG">
|
||
|
<xsl:attribute name="fileref">
|
||
|
<xsl:value-of select="$filename" />
|
||
|
<xsl:text>.svg</xsl:text>
|
||
|
</xsl:attribute>
|
||
|
</imagedata>
|
||
|
</imageobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="argsstring" name="split.functions.args">
|
||
|
<xsl:param name="text" select="."/>
|
||
|
<xsl:value-of select="substring-before(concat($text,','),',')"/>
|
||
|
<xsl:if test="contains($text,',')">
|
||
|
<xsl:text>, 		</xsl:text>
|
||
|
<xsl:call-template name="split.functions.args">
|
||
|
<xsl:with-param name="text" select="substring-after($text,',')"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
</xsl:stylesheet>
|