blob: f24cead917ce263d87e80e7f0b3bf80e4276c4a0 [file] [log] [blame]
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!--
A little bit of automated transformation to help conversion
from Anakia to Forrest/Cocoon docs.
This is purely experimental, it hem...should work, well mostly
but it should manage to break a couple of things so you will
need a manual pass to fix things after that.
Stephane Bailliez, sbailliez@apache.org
-->
<xsl:output method="xml" indent="yes" doctype-system="document-v11.dtd"
doctype-public="-//APACHE//DTD Documentation V1.1//EN" encoding="ISO-8859-1"/>
<!-- properties = header in Forrest language -->
<xsl:template match="properties">
<header>
<xsl:apply-templates select="*[ local-name() != 'author']"/>
<author>
<xsl:apply-templates select="author"/>
</author>
</header>
</xsl:template>
<xsl:template match="author">
<person id="{text()}">
<!--
not everyone gives his mail in order not to receive too much spam... or be
assimilated as 24/24 7/7 support
-->
<xsl:if test="@email"><xsl:attribute name="email"><xsl:value-of select="@email"/></xsl:attribute></xsl:if>
</person>
</xsl:template>
<!-- section = subsection with forrest and the title is an element -->
<xsl:template match="section|subsection">
<section>
<title><xsl:value-of select="@name"/></title>
<xsl:apply-templates/>
</section>
</xsl:template>
<!-- Ignore those tags they should not be here, this will clean up
some but will break others, anyways. br is evil :) -->
<xsl:template match="br|nobr">
<xsl:apply-templates/>
</xsl:template>
<!-- font should not be there, it was used to do a source (or code ?)-->
<xsl:template match="font">
<source>
<xsl:apply-templates/>
</source>
</xsl:template>
<!-- assumes img = icon rather than figure -->
<xsl:template match="img">
<icon>
<xsl:apply-templates select="@alt|@src|@width|@height"/>
</icon>
</xsl:template>
<!-- assume every anchor with a name is an anchor -->
<xsl:template match="a[@name]">
<anchor>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</anchor>
</xsl:template>
<!-- try to be super smart to detect link/anchor/jump -->
<xsl:template match="a[@href]">
<xsl:choose>
<!-- something with a hashmark is a jump -->
<xsl:when test="starts-with(@href, '#')">
<jump>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</jump>
</xsl:when>
<!--
assume everything out of apache domain would be better with a fork
This is really a life style, I hate windows forking all over my
desktop but it's quite convenient sometimes when too lazy to shift.
One super thing would be to do like Microsoft.com and put an
extra icon via forrest after the link when it send outside
the apache site.
-->
<xsl:when test="starts-with(@href, 'http://') and not(contains(@href, 'apache.org'))">
<fork>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</fork>
</xsl:when>
<!-- fallback to a basic link -->
<xsl:otherwise>
<link>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</link>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!---
Ugly hack to define an axial table
The css could be defined as text-align:right !important;
-->
<xsl:template match="table">
<table>
<!--
(tr[1]/th and tr[1]/td) would give the same result
but I'm using following-sibbling to sound super smart
and obfuscate my code. It hard to write, so it should
be hard to understand ;-)
-->
<xsl:if test="tr[1]/th[following-sibling::td]">
<xsl:attribute name="class">axial</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</table>
</xsl:template>
<!-- wide rule, copy all nodes and attributes -->
<xsl:template match="node()|@*" priority="-1">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>