290 lines
12 KiB
XML
290 lines
12 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
|
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
|
|
|
<xsl:output method="html" encoding="utf-8" indent="yes"
|
|
doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN"
|
|
doctype-system="http://www.w3.org/TR/REC-html40/loose.dtd"/>
|
|
|
|
<!-- The top level element of the input file is "buildinfo" -->
|
|
<xsl:template match="buildinfo">
|
|
<xsl:apply-templates select="node()"/>
|
|
</xsl:template>
|
|
|
|
<!-- The actual HTML tree is in "buildinfo/document" -->
|
|
<xsl:template match="buildinfo/document">
|
|
<xsl:element name="html">
|
|
<xsl:attribute name="lang">
|
|
<xsl:value-of select="/buildinfo/@language"/>
|
|
</xsl:attribute>
|
|
<xsl:apply-templates select="node()"/>
|
|
</xsl:element>
|
|
</xsl:template>
|
|
|
|
<!-- HTML head -->
|
|
<xsl:template match="head">
|
|
<xsl:copy>
|
|
<meta name="robots" content="index, follow"/>
|
|
<link rel="stylesheet" media="all" href="/fsfeurope.css" type="text/css"/>
|
|
<link rel="stylesheet" media="print" href="/print.css" type="text/css"/>
|
|
<link rel="icon" href="/graphics/fsfeurope.ico" type="image/x-icon"/>
|
|
<link rel="shortcut icon" href="/graphics/fsfeurope.ico" type="image/x-icon"/>
|
|
<xsl:apply-templates select="@*|node()"/>
|
|
</xsl:copy>
|
|
</xsl:template>
|
|
|
|
<!-- HTML body -->
|
|
<xsl:template match="body">
|
|
<xsl:copy>
|
|
|
|
<!-- First of all, a comment to make clear this is generated -->
|
|
<xsl:comment>This file was generated by an XSLT script. Please do not edit.</xsl:comment>
|
|
|
|
<xsl:element name="div">
|
|
<xsl:attribute name="class">page</xsl:attribute>
|
|
<xsl:comment>Unnecessary div, for IE only</xsl:comment>
|
|
|
|
<xsl:element name="a">
|
|
<xsl:attribute name="class">n</xsl:attribute>
|
|
<xsl:attribute name="id">top</xsl:attribute>
|
|
<xsl:attribute name="href">#content</xsl:attribute>
|
|
<xsl:text>Skip menu</xsl:text>
|
|
</xsl:element>
|
|
<xsl:comment>Give non-graphical browsers a way to skip the menu</xsl:comment>
|
|
|
|
<!-- Menu bar -->
|
|
<xsl:element name="div">
|
|
<xsl:attribute name="class">menu</xsl:attribute>
|
|
|
|
<!-- Logo -->
|
|
<xsl:element name="div">
|
|
<xsl:attribute name="class">logo</xsl:attribute>
|
|
<xsl:element name="a">
|
|
<xsl:attribute name="class">gl</xsl:attribute>
|
|
<xsl:attribute name="href">/</xsl:attribute>
|
|
<xsl:element name="img">
|
|
<xsl:attribute name="alt">[FSFE Logo]</xsl:attribute>
|
|
<xsl:attribute name="src">/graphics/logo.png</xsl:attribute>
|
|
</xsl:element>
|
|
</xsl:element>
|
|
</xsl:element>
|
|
|
|
<!-- Menu -->
|
|
<xsl:element name="ul">
|
|
<xsl:for-each select="/buildinfo/menuset/menu[not(@parent)]">
|
|
<xsl:sort select="@id"/>
|
|
<xsl:variable name="id"><xsl:value-of select="@id"/></xsl:variable>
|
|
<xsl:element name="li">
|
|
<xsl:element name="a">
|
|
<xsl:attribute name="href"><xsl:value-of select="."/></xsl:attribute>
|
|
<xsl:value-of select="/buildinfo/textset/text[@id=$id]"/>
|
|
</xsl:element>
|
|
</xsl:element>
|
|
<xsl:for-each select="/buildinfo/menuset/menu[@parent=$id]">
|
|
<xsl:sort select="@id" />
|
|
<xsl:variable name="mid"><xsl:value-of select="@id"/></xsl:variable>
|
|
<xsl:element name="li">
|
|
<xsl:attribute name="class">submenu</xsl:attribute>
|
|
<xsl:element name="a">
|
|
<xsl:attribute name="href"><xsl:value-of select="."/></xsl:attribute>
|
|
<xsl:value-of select="/buildinfo/textset/text[@id=$mid]"/>
|
|
</xsl:element>
|
|
</xsl:element>
|
|
</xsl:for-each>
|
|
</xsl:for-each>
|
|
</xsl:element>
|
|
|
|
<!-- Focus list -->
|
|
<xsl:element name="ul">
|
|
<xsl:variable name="filename"><xsl:value-of select="/buildinfo/@filename"/>.<xsl:value-of select="/buildinfo/@language"/>.html</xsl:variable>
|
|
<xsl:element name="li">
|
|
<xsl:element name="a"><xsl:attribute name="href">http://www.fsfeurope.org<xsl:value-of select="$filename"/></xsl:attribute>Our global work</xsl:element>
|
|
</xsl:element>
|
|
<xsl:element name="li">
|
|
<xsl:attribute name="class">submenu</xsl:attribute>
|
|
<xsl:element name="a"><xsl:attribute name="href">http://www.germany.fsfeurope.org<xsl:value-of select="$filename"/></xsl:attribute>Germany</xsl:element>
|
|
</xsl:element>
|
|
<xsl:element name="li">
|
|
<xsl:attribute name="class">submenu</xsl:attribute>
|
|
<xsl:element name="a"><xsl:attribute name="href">http://www.italy.fsfeurope.org<xsl:value-of select="$filename"/></xsl:attribute>Italy</xsl:element>
|
|
</xsl:element>
|
|
<xsl:element name="li">
|
|
<xsl:attribute name="class">submenu</xsl:attribute>
|
|
<xsl:element name="a"><xsl:attribute name="href">http://www.spain.fsfeurope.org<xsl:value-of select="$filename"/></xsl:attribute>Spain</xsl:element>
|
|
</xsl:element>
|
|
<xsl:element name="li">
|
|
<xsl:attribute name="class">submenu</xsl:attribute>
|
|
<xsl:element name="a"><xsl:attribute name="href">http://www.sweden.fsfeurope.org<xsl:value-of select="$filename"/></xsl:attribute>Sweden</xsl:element>
|
|
</xsl:element>
|
|
</xsl:element>
|
|
|
|
<!-- Sister organisation list -->
|
|
<xsl:element name="ul">
|
|
<xsl:element name="li">Our sister organisations</xsl:element>
|
|
<xsl:element name="li">
|
|
<xsl:attribute name="class">submenu</xsl:attribute>
|
|
<xsl:element name="a"><xsl:attribute name="href">http://www.fsf.org</xsl:attribute>FSF</xsl:element>
|
|
</xsl:element>
|
|
<xsl:element name="li">
|
|
<xsl:attribute name="class">submenu</xsl:attribute>
|
|
<xsl:element name="a"><xsl:attribute name="href">http://www.fsf.org.in</xsl:attribute>FSF India</xsl:element>
|
|
</xsl:element>
|
|
<xsl:element name="li">
|
|
<xsl:attribute name="class">submenu</xsl:attribute>
|
|
<xsl:element name="a"><xsl:attribute name="href">http://www.fsfla.org</xsl:attribute>FSF Latin America</xsl:element>
|
|
</xsl:element>
|
|
</xsl:element>
|
|
|
|
</xsl:element>
|
|
<!-- End Menu bar -->
|
|
|
|
<!-- Language bar -->
|
|
<xsl:element name="div">
|
|
<xsl:attribute name="class">language</xsl:attribute>
|
|
|
|
<!-- Join the Fellowship -->
|
|
<xsl:element name="a">
|
|
<xsl:attribute name="href">https://www.fsfe.org/join</xsl:attribute>
|
|
<xsl:element name="img">
|
|
<xsl:attribute name="alt">Join the Fellowship!</xsl:attribute>
|
|
<xsl:attribute name="src">/graphics/global/Join_Fellowship.png</xsl:attribute>
|
|
</xsl:element>
|
|
</xsl:element>
|
|
|
|
<!-- Translation list -->
|
|
<xsl:element name="ul">
|
|
<xsl:for-each select="/buildinfo/trlist/tr">
|
|
<xsl:sort select="@id"/>
|
|
<xsl:element name="li">
|
|
<xsl:choose>
|
|
<xsl:when test="@id=/buildinfo/@language">
|
|
<xsl:value-of select="." disable-output-escaping="yes"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:element name="a">
|
|
<xsl:attribute name="href"><xsl:value-of select="/buildinfo/@filename"/>.<xsl:value-of select="@id"/>.html</xsl:attribute>
|
|
<xsl:value-of select="." disable-output-escaping="yes"/>
|
|
</xsl:element>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:element>
|
|
</xsl:for-each>
|
|
</xsl:element>
|
|
|
|
<!-- Outdated note -->
|
|
<xsl:if test="/buildinfo/@outdated='yes'">
|
|
<xsl:element name="p">
|
|
<xsl:apply-templates select="/buildinfo/textset/text[@id='outdated']/node()" />
|
|
</xsl:element>
|
|
</xsl:if>
|
|
|
|
<!-- Missing translation note -->
|
|
<xsl:if test="/buildinfo/@language!=/buildinfo/document/@language">
|
|
<xsl:element name="p">
|
|
<xsl:apply-templates select="/buildinfo/textset/text[@id='notranslation']/node()" />
|
|
</xsl:element>
|
|
</xsl:if>
|
|
|
|
</xsl:element>
|
|
<!-- End Language bar -->
|
|
|
|
<!-- Content -->
|
|
<xsl:element name="div">
|
|
<xsl:attribute name="class">content</xsl:attribute>
|
|
<xsl:attribute name="id">content</xsl:attribute>
|
|
|
|
<!-- Here goes the actual content of the <body> node of the input file -->
|
|
<xsl:apply-templates select="node()"/>
|
|
|
|
<!-- Link to top -->
|
|
<xsl:element name="a">
|
|
<xsl:attribute name="class">n</xsl:attribute>
|
|
<xsl:attribute name="href">#top</xsl:attribute>
|
|
<xsl:text>To top</xsl:text>
|
|
</xsl:element>
|
|
|
|
</xsl:element>
|
|
<!-- End Content -->
|
|
|
|
<!-- Footer -->
|
|
<xsl:element name="div">
|
|
<xsl:attribute name="class">footer</xsl:attribute>
|
|
|
|
<xsl:element name="p">
|
|
|
|
<!-- Copyright -->
|
|
<xsl:apply-templates select="/buildinfo/textset/text[@id='copyright']/node()"/>
|
|
|
|
<!-- "Last changed" magic -->
|
|
<xsl:variable name="timestamp">
|
|
<xsl:value-of select="/buildinfo/document/timestamp"/>
|
|
</xsl:variable>
|
|
<!-- FIXME: over time, all pages should have the timestamp -->
|
|
<!-- tags, so this conditional could be removed -->
|
|
<xsl:if test="string-length($timestamp) > 0">
|
|
<xsl:variable name="Date">
|
|
<xsl:value-of select="substring-before(substring-after($timestamp, 'Date: '), ' $')"/>
|
|
</xsl:variable>
|
|
<xsl:variable name="Author">
|
|
<xsl:value-of select="substring-before(substring-after($timestamp, 'Author: '), ' $')"/>
|
|
</xsl:variable>
|
|
<xsl:apply-templates select="/buildinfo/textset/text[@id='lastchanged']/node()"/>
|
|
<xsl:value-of select="translate ($Date, '/', '-')"/>
|
|
(<xsl:value-of select="$Author"/>)
|
|
</xsl:if>
|
|
|
|
<!-- Link to the XHTML source -->
|
|
<xsl:element name="a">
|
|
<xsl:attribute name="href">
|
|
<xsl:text>/source</xsl:text>
|
|
<xsl:value-of select="/buildinfo/@filename"/>
|
|
<xsl:text>.</xsl:text>
|
|
<xsl:value-of select="/buildinfo/document/@language"/>
|
|
<xsl:text>.xhtml</xsl:text>
|
|
</xsl:attribute>
|
|
<xsl:text>[XHTML]</xsl:text>
|
|
</xsl:element>
|
|
|
|
<!-- Insert the appropriate translation notice -->
|
|
<xsl:if test="/buildinfo/document/@translation!=''">
|
|
<xsl:element name="br"/>
|
|
<xsl:value-of select="/buildinfo/textset/text[@id='translator1']"/>
|
|
<xsl:value-of select="/buildinfo/document/translator"/>
|
|
<xsl:value-of select="/buildinfo/textset/text[@id='translator2']"/>
|
|
<xsl:element name="a">
|
|
<xsl:attribute name="href">
|
|
<xsl:value-of select="/buildinfo/@filename"/>
|
|
<xsl:text>.en.html</xsl:text>
|
|
</xsl:attribute>
|
|
<xsl:value-of select="/buildinfo/textset/text[@id='translator3']"/>
|
|
</xsl:element>
|
|
<xsl:value-of select="/buildinfo/textset/text[@id='translator4']"/>
|
|
</xsl:if>
|
|
|
|
<!-- Permission note -->
|
|
<xsl:element name="br"/>
|
|
<xsl:apply-templates select="/buildinfo/textset/text[@id='permission']/node()"/>
|
|
|
|
<!-- Webmaster feedback note -->
|
|
<xsl:element name="br"/>
|
|
<xsl:apply-templates select="/buildinfo/textset/text[@id='webmaster']/node()"/>
|
|
</xsl:element>
|
|
|
|
</xsl:element>
|
|
<!-- End Footer -->
|
|
|
|
</xsl:element>
|
|
</xsl:copy>
|
|
</xsl:template>
|
|
|
|
<!-- Do not copy non-HTML elements to output -->
|
|
<xsl:template match="timestamp|translator|buildinfo/set|buildinfo/textset|buildinfo/menuset|buildinfo/trlist"/>
|
|
|
|
<!-- For all other nodes, copy verbatim -->
|
|
<xsl:template match="@*|node()" priority="-1">
|
|
<xsl:copy>
|
|
<xsl:apply-templates select="@*|node()"/>
|
|
</xsl:copy>
|
|
</xsl:template>
|
|
</xsl:stylesheet>
|