|
- <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>
|