blob: 6d5dc8385d4d0e9b348eb1e155b67bcf2882d100 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes" method="xml"/>
<xsl:template match="//document">
<document>
<properties>
<title>
<xsl:value-of select="header/title"/>
</title>
</properties>
<!-- Ignore the rest of the header and all of the footer. -->
<xsl:apply-templates select="body"/>
</document>
</xsl:template>
<xsl:template match="body/section">
<section name="{title}">
<xsl:apply-templates/>
</section>
</xsl:template>
<xsl:template match="section[ancestor:: section]">
<subsection name="{title}">
<xsl:apply-templates/>
</subsection>
</xsl:template>
<!-- Just edit these out. -->
<xsl:template match="title"/>
<!-- Forrest <link> (and <jump> and <fork> is just <a> in Maven/Anakia -->
<xsl:template match="link|jump|fork">
<xsl:element name="a">
<!-- Skip the 'role' attribute, which is in Forrest but not in Anakia or HTML. -->
<xsl:apply-templates select="@*[name() != 'role']|node()"/>
</xsl:element>
</xsl:template>
<!-- Anakia doesn't have note, warning or fixme. -->
<xsl:template match="note">
<p>
<strong>Note:</strong>
<br/>
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:template match="warning">
<p>
<strong>Warning:</strong>
<br/>
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:template match="fixme">
<p>
<strong>Fixme:</strong>
<br/>
<xsl:apply-templates/>
</p>
</xsl:template>
<!-- Forrest has <icon> and <figure>, which we translate to <img>. -->
<xsl:template match="icon|figure">
<img>
<xsl:apply-templates select="@*"/>
</img>
</xsl:template>
<xsl:template match="anchor">
<a name="{id}"/>
</xsl:template>
<!-- Forrest XML defines default values for colspan and rowspan that force them to
be output, so we edit those out. -->
<xsl:template match="td|th">
<xsl:copy>
<!-- Probably an easier way to do this, but it works. -->
<xsl:if test="@colspan != 1">
<xsl:attribute name="colspan">
<xsl:value-of select="@colspan"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="@rowspan != 1">
<xsl:attribute name="rowspan">
<xsl:value-of select="@rowspan"/>
</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="@*[name() != 'rowspan'][name() != 'colspan']"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<!-- General copy element/attribute rule. -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>