fsfe-website/fsfe.xsl

1805 lines
85 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dt="http://xsltsl.org/date-time"
exclude-result-prefixes="dt"
xmlns:str="http://exslt.org/strings"
extension-element-prefixes="str">
<xsl:import href="tools/xsltsl/translations.xsl" />
<xsl:import href="tools/xsltsl/static-elements.xsl" />
<xsl:import href="tools/xsltsl/tagging.xsl" />
<!-- HTML 5 compatibility doctype, since our XSLT parser doesn't support disabling output escaping -->
<xsl:output method="html" encoding="utf-8" indent="yes" doctype-system="about:legacy-compat" />
<xsl:variable name="mode">
<xsl:value-of select="'normal'" /> <!-- can be either 'normal' or 'valentine' -->
</xsl:variable>
<!-- The top level element of the input file is "buildinfo" -->
<xsl:template match="/">
<xsl:apply-templates select="buildinfo/document"/>
</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:attribute name="class"><xsl:value-of select="/buildinfo/@language" /> no-js</xsl:attribute>
<xsl:if test="/buildinfo/@language='ar'">
<xsl:attribute name="dir">rtl</xsl:attribute>
</xsl:if>
<!--<xsl:apply-templates select="node()"/>-->
<xsl:apply-templates select="head" />
<xsl:call-template name="fsfe-body" />
</xsl:element>
</xsl:template>
<!-- HTML head -->
<xsl:template match="head">
<head>
<xsl:call-template name="fsfe-head" />
</head>
</xsl:template>
<xsl:template name="fsfe-head">
<!-- Don't let search engine robots index untranslated pages -->
<xsl:element name="meta">
<xsl:attribute name="name">robots</xsl:attribute>
<xsl:attribute name="content">
<xsl:choose>
<xsl:when test="/buildinfo/@language=/buildinfo/document/@language">index, follow</xsl:when>
<xsl:otherwise>noindex</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:element>
<!-- For pages used on external web servers, load the CSS from absolute URL -->
<xsl:variable name="urlprefix">
<xsl:if test="/buildinfo/document/@external">https://fsfe.org</xsl:if>
</xsl:variable>
<!-- For a mobile/tablet/etc. friendly website -->
<xsl:element name="meta">
<xsl:attribute name="name">viewport</xsl:attribute>
<xsl:attribute name="content">width=device-width, initial-scale=1.0"</xsl:attribute>
</xsl:element>
<xsl:choose>
<xsl:when test="/buildinfo/document/body[ contains( @class, 'fellowship' ) ]">
<xsl:element name="link">
<xsl:attribute name="rel">stylesheet</xsl:attribute>
<xsl:attribute name="media">all</xsl:attribute>
<xsl:attribute name="href"><xsl:value-of select="$urlprefix"/>/look/fellowship.min.css</xsl:attribute>
<xsl:attribute name="type">text/css</xsl:attribute>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="link">
<xsl:attribute name="rel">stylesheet</xsl:attribute>
<xsl:attribute name="media">all</xsl:attribute>
<xsl:attribute name="href"><xsl:value-of select="$urlprefix"/>/look/fsfe.min.css</xsl:attribute>
<xsl:attribute name="type">text/css</xsl:attribute>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="$mode = 'valentine'">
<xsl:element name="link">
<xsl:attribute name="rel">stylesheet</xsl:attribute>
<xsl:attribute name="media">all</xsl:attribute>
<xsl:attribute name="href"><xsl:value-of select="$urlprefix"/>/look/valentine.min.css</xsl:attribute>
<xsl:attribute name="type">text/css</xsl:attribute>
</xsl:element>
</xsl:if>
<xsl:element name="link">
<xsl:attribute name="rel">stylesheet</xsl:attribute>
<xsl:attribute name="media">print</xsl:attribute>
<xsl:attribute name="href"><xsl:value-of select="$urlprefix"/>/look/print.css</xsl:attribute>
<xsl:attribute name="type">text/css</xsl:attribute>
</xsl:element>
<xsl:if test="/buildinfo/@language='ar'">
<xsl:element name="link">
<xsl:attribute name="rel">stylesheet</xsl:attribute>
<xsl:attribute name="media">all</xsl:attribute>
<xsl:attribute name="href"><xsl:value-of select="$urlprefix"/>/look/rtl.css</xsl:attribute>
<xsl:attribute name="type">text/css</xsl:attribute>
</xsl:element>
</xsl:if>
<xsl:element name="link">
<xsl:attribute name="rel">icon</xsl:attribute>
<xsl:attribute name="href">
<xsl:value-of select="$urlprefix"/>
<xsl:choose>
<xsl:when test="$mode = 'valentine'">/graphics/fsfev.png</xsl:when>
<xsl:otherwise>/graphics/fsfe.ico</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:attribute name="type">image/x-icon</xsl:attribute>
</xsl:element>
<link rel="apple-touch-icon" href="{$urlprefix}/graphics/touch-icon.png" type="image/png" />
<link rel="apple-touch-icon-precomposed" href="{$urlprefix}/graphics/touch-icon.png" type="image/png" />
<xsl:element name="link">
<xsl:attribute name="rel">alternate</xsl:attribute>
<xsl:attribute name="title">FSFE <xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'menu1/news'" /></xsl:call-template></xsl:attribute>
<xsl:attribute name="href"><xsl:value-of select="$urlprefix"/>/news/news.<xsl:value-of select="/buildinfo/@language"/>.rss</xsl:attribute>
<xsl:attribute name="type">application/rss+xml</xsl:attribute>
</xsl:element>
<xsl:element name="link">
<xsl:attribute name="rel">alternate</xsl:attribute>
<xsl:attribute name="title">FSFE <xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'menu1/events'" /></xsl:call-template></xsl:attribute>
<xsl:attribute name="href"><xsl:value-of select="$urlprefix"/>/events/events.<xsl:value-of select="/buildinfo/@language"/>.rss</xsl:attribute>
<xsl:attribute name="type">application/rss+xml</xsl:attribute>
</xsl:element>
<xsl:for-each select="/buildinfo/trlist/tr">
<xsl:sort select="@id"/>
<xsl:element name="link">
<xsl:attribute name="type">text/html</xsl:attribute>
<xsl:attribute name="rel">alternate</xsl:attribute>
<xsl:attribute name="hreflang"><xsl:value-of select="@id" /></xsl:attribute>
<xsl:attribute name="lang"><xsl:value-of select="@id" /></xsl:attribute>
<xsl:attribute name="href"><xsl:value-of select="/buildinfo/@filename"/>.<xsl:value-of select="@id"/>.html</xsl:attribute>
<xsl:attribute name="title"><xsl:value-of select="." disable-output-escaping="yes" /></xsl:attribute>
</xsl:element>
</xsl:for-each>
<xsl:for-each select="/buildinfo/document/author">
<xsl:variable name="id">
<xsl:value-of select="@id" />
</xsl:variable>
<xsl:element name="meta">
<xsl:attribute name="name">author</xsl:attribute>
<xsl:attribute name="content">
<xsl:choose>
<xsl:when test="@id and document('about/people/people.en.xml')/personset/person[@id=$id]">
<xsl:value-of select="document('about/people/people.en.xml')/personset/person[@id=$id]/name" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="name" />
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
<script src="/scripts/jquery-1.10.2.min.js"></script>
<script src="/scripts/modernizr.custom.30122.js"></script>
<script src="/scripts/bootstrap-3.0.3.min.js"></script>
<script src="/scripts/master.js"></script>
<script src="/scripts/placeholder.js"></script>
<script src="/scripts/highlight.pack.js"></script>
<script>
hljs.tabReplace = " ";
// hljs.initHighligtingOnLoad();
// above line throws error: Uncaught TypeError: Object [object Object] has no method 'initHighligtingOnLoad'
</script>
<xsl:comment>
<![CDATA[
[if lt IE 8]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE8.js"></script>
<![endif]
]]>
<![CDATA[
[if lt IE 9]>
<script src="/scripts/html5shiv.js"></script>
<script src="/scripts/respond.min.js"></script>
<![endif]
]]>
</xsl:comment>
<xsl:apply-templates select="@*|node()"/>
</xsl:template>
<!-- Modify H1 -->
<xsl:template match="h1">
<!-- Apply news page PRE-rules -->
<xsl:if test="string(/buildinfo/document/@newsdate) and
(not(string(/buildinfo/document/@type)) or
/buildinfo/document/@type != 'newsletter')">
<!-- add link to press/press.xx.html -->
<xsl:element name="p">
<xsl:attribute name="id">category</xsl:attribute>
<xsl:element name="a">
<xsl:attribute name="href">/press/press.<xsl:value-of select="/buildinfo/@language"/>.html</xsl:attribute>
<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'press'" /></xsl:call-template>
</xsl:element>
</xsl:element>
</xsl:if>
<!-- Apply newsletter page PRE-rules -->
<xsl:if test="string(/buildinfo/document/@newsdate) and /buildinfo/document/@type = 'newsletter'">
<xsl:element name="p">
<xsl:attribute name="id">category</xsl:attribute>
<xsl:element name="a">
<xsl:attribute name="href">/news/newsletter.<xsl:value-of select="/buildinfo/@language"/>.html</xsl:attribute>
<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'newsletter'" /></xsl:call-template>
</xsl:element>
</xsl:element>
</xsl:if>
<!-- auto generate ID for headings if it doesn't already exist -->
<xsl:call-template name="generate-id" />
<!-- Apply news page rules -->
<xsl:if test="string(/buildinfo/document/@newsdate) and
(not(string(/buildinfo/document/@type)) or
/buildinfo/document/@type != 'newsletter')">
<!-- Social Links -->
<xsl:variable name="original_file"
select="concat(substring(string(/buildinfo/@filename), 2), '.' ,string(/buildinfo/@original), '.xhtml')"
as="xs:string" />
<xsl:variable name="originalDocument" select="document($original_file)/html" />
<xsl:element name="a">
<xsl:attribute name="class">social-link</xsl:attribute>
<xsl:attribute name="href">https://flattr.com/submit/auto?user_id=fsfe&amp;url=http://fsfe.org/<xsl:value-of select="/buildinfo/@filename" />.html&amp;title=<xsl:value-of select="$originalDocument/head/title" />&amp;description=<xsl:value-of select="$originalDocument/body/p[@newsteaser]" />&amp;tags=<xsl:for-each select="$originalDocument/tags/tag"><xsl:value-of select="node()" />,</xsl:for-each>&amp;category=text</xsl:attribute>
<xsl:element name="img">
<xsl:attribute name="src">/graphics/flattr-badge-large.png</xsl:attribute>
<xsl:attribute name="alt">Flattr this</xsl:attribute>
</xsl:element>
</xsl:element>
<xsl:element name="a">
<xsl:attribute name="class">social-link</xsl:attribute>
<xsl:attribute name="href">/support?pr</xsl:attribute>
<xsl:element name="img">
<xsl:attribute name="src">/graphics/supporter/FSFE_plus1_48x22_b.png</xsl:attribute>
<xsl:attribute name="alt">Support FSFE</xsl:attribute>
</xsl:element>
</xsl:element>
<!-- End Social Links -->
<!-- add publishing information (author, date) -->
<xsl:element name="div">
<xsl:attribute name="id">article-metadata</xsl:attribute>
<span class="published-on"> <xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'published'" /></xsl:call-template>: </span>
<xsl:element name="time">
<xsl:attribute name="class">dt-published</xsl:attribute>
<xsl:value-of select="/buildinfo/document/@newsdate" />
</xsl:element>
</xsl:element>
</xsl:if>
<!-- End apply news page rules -->
<!-- Apply newsletter page -->
<xsl:if test="string(/buildinfo/document/@newsdate) and /buildinfo/document/@type = 'newsletter'">
<!--TODO: this moved to the sidebar, but it would be nice to show it for newsletters which do not have sidebars:
<xsl:call-template name="subscribe-nl" /-->
<!-- Social Links -->
<xsl:variable name="original_file"
select="concat(substring(string(/buildinfo/@filename), 2), '.' ,string(/buildinfo/@original), '.xhtml')"
as="xs:string" />
<xsl:variable name="originalDocument" select="document($original_file)/html" />
<xsl:element name="a">
<xsl:attribute name="class">social-link</xsl:attribute>
<xsl:attribute name="href">https://flattr.com/submit/auto?user_id=fsfe&amp;url=http://fsfe.org/<xsl:value-of select="/buildinfo/@filename" />.html&amp;title=<xsl:value-of select="$originalDocument/head/title" />&amp;description=<xsl:value-of select="$originalDocument/body/p[@newsteaser]" />&amp;tags=<xsl:for-each select="$originalDocument/tags/tag"><xsl:value-of select="node()" />,</xsl:for-each>&amp;category=text</xsl:attribute>
<xsl:element name="img">
<xsl:attribute name="src">/graphics/flattr-badge-large.png</xsl:attribute>
<xsl:attribute name="alt">Flattr this</xsl:attribute>
</xsl:element>
</xsl:element>
<xsl:element name="a">
<xsl:attribute name="class">social-link</xsl:attribute>
<xsl:attribute name="href">/support?pr</xsl:attribute>
<xsl:element name="img">
<xsl:attribute name="src">/graphics/supporter/FSFE_plus1_48x22_b.png</xsl:attribute>
<xsl:attribute name="alt">Support FSFE</xsl:attribute>
</xsl:element>
</xsl:element>
<!-- End Social Links -->
</xsl:if>
<!-- End apply newsletter page rules -->
<!-- Depreciated- see next block: Apply article rules -->
<xsl:if test = "string(/buildinfo/document/head/meta[@name='author-name-1']/@content)">
<xsl:element name="div">
<xsl:attribute name="id">article-metadata</xsl:attribute>
<xsl:if test = "string(/buildinfo/document/head/meta[@name='author-name-1']/@content)">
<span class="written-by"><xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'author'" /></xsl:call-template>: </span>
<xsl:choose>
<xsl:when test="/buildinfo/document/head/meta[@name='author-link-1']">
<xsl:variable name="author-link-1" select="/buildinfo/document/head/meta[@name='author-link-1']/@content" />
<a class="p-author" rel='author' href='{$author-link-1}'>
<xsl:value-of select="/buildinfo/document/head/meta[@name='author-name-1']/@content" /> </a>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/buildinfo/document/head/meta[@name='author-name-1']/@content" />
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test = "string(/buildinfo/document/head/meta[@name='author-name-2']/@content)">
<xsl:choose>
<xsl:when test="/buildinfo/document/head/meta[@name='author-link-2']">
<xsl:variable name="author-link-2" select="/buildinfo/document/head/meta[@name='author-link-2']/@content" />
, <a class="p-author" rel='author' href='{$author-link-2}'>
<xsl:value-of select="/buildinfo/document/head/meta[@name='author-name-2']/@content" /> </a>
</xsl:when>
<xsl:otherwise>
, <xsl:value-of select="/buildinfo/document/head/meta[@name='author-name-2']/@content" />
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test = "string(/buildinfo/document/head/meta[@name='author-name-3']/@content)">
<xsl:choose>
<xsl:when test="/buildinfo/document/head/meta[@name='author-link-3']">
<xsl:variable name="author-link-3" select="/buildinfo/document/head/meta[@name='author-link-3']/@content" />
, <a class="p-author" rel='author' href='{$author-link-3}'>
<xsl:value-of select="/buildinfo/document/head/meta[@name='author-name-3']/@content" /> </a>
</xsl:when>
<xsl:otherwise>
, <xsl:value-of select="/buildinfo/document/head/meta[@name='author-name-3']/@content" />
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<span class="published-on">&#160;<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'published'" /></xsl:call-template>: </span>
<xsl:element name="time">
<xsl:attribute name="class">dt-published</xsl:attribute>
<xsl:value-of select="/buildinfo/document/head/meta[@name='publication-date']/@content" />
</xsl:element>
<xsl:if test = "string(/buildinfo/document/head/meta[@name='pdf-link']/@content)">
<span class="pdf-download">&#160;PDF: </span>
<xsl:variable name="pdf-link" select="/buildinfo/document/head/meta[@name='pdf-link']/@content" />
<a href='{$pdf-link}'>download</a>
</xsl:if>
</xsl:element> <!-- </div> -->
</xsl:if>
<!-- End Apply article rules -->
<!--Article authors, date -->
<xsl:if test="/buildinfo/document/author or /buildinfo/document/date or /buildinfo/document/download">
<xsl:element name="div">
<xsl:attribute name="id">article-metadata</xsl:attribute>
<xsl:if test="/buildinfo/document/author">
<span class="written-by"><xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'writtenby'" /></xsl:call-template>&#160;</span>
<xsl:for-each select="/buildinfo/document/author">
<xsl:variable name="id">
<xsl:value-of select="@id" />
</xsl:variable>
<xsl:choose>
<xsl:when test="@id and document('about/people/people.en.xml')/personset/person[@id=$id]">
<!-- if the author is in fsfe's people.xml then we take information from there -->
<xsl:choose>
<xsl:when test="document('about/people/people.en.xml')/personset/person[@id=$id]/link">
<xsl:element name="a">
<xsl:attribute name="class">author p-author h-card</xsl:attribute>
<xsl:attribute name="rel">author</xsl:attribute>
<xsl:attribute name="href"><xsl:value-of select="document('about/people/people.en.xml')/personset/person[@id=$id]/link" /></xsl:attribute>
<xsl:if test="document('about/people/people.en.xml')/personset/person[@id=$id]/avatar">
<xsl:element name="img">
<xsl:attribute name="alt"></xsl:attribute>
<xsl:attribute name="src"><xsl:value-of select="document('about/people/people.en.xml')/personset/person[@id=$id]/avatar" /></xsl:attribute>
</xsl:element>
</xsl:if>
<xsl:value-of select="document('about/people/people.en.xml')/personset/person[@id=$id]/name" />
</xsl:element>&#160;
</xsl:when>
<xsl:otherwise>
<xsl:if test="document('about/people/people.en.xml')/personset/person[@id=$id]/avatar">
<xsl:element name="img">
<xsl:attribute name="alt"></xsl:attribute>
<xsl:attribute name="src"><xsl:value-of select="document('about/people/people.en.xml')/personset/person[@id=$id]/avatar" /></xsl:attribute>
</xsl:element>
</xsl:if>
<span class="author p-author">
<xsl:value-of select="document('about/people/people.en.xml')/personset/person[@id=$id]/name" />&#160;
</span>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="link">
<xsl:element name="a">
<xsl:attribute name="class">author p-author h-card</xsl:attribute>
<xsl:attribute name="rel">author</xsl:attribute>
<xsl:attribute name="href"><xsl:value-of select="link" /></xsl:attribute>
<xsl:if test="avatar">
<xsl:element name="img">
<xsl:attribute name="alt"></xsl:attribute>
<xsl:attribute name="src"><xsl:value-of select="avatar" /></xsl:attribute>
</xsl:element>
</xsl:if>
<xsl:value-of select="name" />
</xsl:element>&#160;
</xsl:when>
<xsl:otherwise>
<xsl:if test="avatar">
<xsl:element name="img">
<xsl:attribute name="alt"></xsl:attribute>
<xsl:attribute name="src"><xsl:value-of select="avatar" /></xsl:attribute>
</xsl:element>
</xsl:if>
<span class="author p-author">
<xsl:value-of select="name" />&#160;
</span>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:if>
<xsl:if test="/buildinfo/document/date">
<span class="published-on"><xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'published'" /></xsl:call-template>&#160;</span>
<xsl:element name="time">
<xsl:attribute name="class">dt-published</xsl:attribute>
<xsl:value-of select="/buildinfo/document/date/original/@content" />
</xsl:element>&#160;
<xsl:if test="/buildinfo/document/date/revision">
(<span class="revision-on"><xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'revision'" /></xsl:call-template></span>
<xsl:for-each select="/buildinfo/document/date/revision">
&#160;<xsl:element name="time">
<xsl:attribute name="class">dt-updated</xsl:attribute>
<xsl:value-of select="@content" />
</xsl:element>
</xsl:for-each>)&#160;
</xsl:if>
</xsl:if>
<xsl:if test="/buildinfo/document/download">
<span class="download"><xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'download'" /></xsl:call-template>&#160;</span>
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="/buildinfo/document/download/@content" /></xsl:attribute>
<xsl:value-of select="/buildinfo/document/download/@type" />
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:if>
<!--End Article authors, date-->
</xsl:template>
<!-- End modifications to H1 -->
<!-- Modify H2 -->
<xsl:template match="h2">
<!-- auto generate ID for headings if it doesn't already exist -->
<xsl:call-template name="generate-id" />
</xsl:template>
<!-- Modify H3 -->
<xsl:template match="h3">
<!-- auto generate ID for headings if it doesn't already exist -->
<xsl:call-template name="generate-id" />
</xsl:template>
<!-- Modify H4 -->
<xsl:template match="h4">
<!-- auto generate ID for headings if it doesn't already exist -->
<xsl:call-template name="generate-id" />
</xsl:template>
<!-- Modify H4 -->
<xsl:template match="h4">
<!-- auto generate ID for headings if it doesn't already exist -->
<xsl:call-template name="generate-id" />
</xsl:template>
<!-- Modify H5 -->
<xsl:template match="h5">
<!-- auto generate ID for headings if it doesn't already exist -->
<xsl:call-template name="generate-id" />
</xsl:template>
<!-- Modify H6 -->
<xsl:template match="h6">
<!-- auto generate ID for headings if it doesn't already exist -->
<xsl:call-template name="generate-id" />
</xsl:template>
<!-- Apply support page -->
<xsl:template match="support-portal-javascript">
<xsl:call-template name="support-portal-javascript" />
</xsl:template>
<xsl:template match="support-form-javascript">
<xsl:call-template name="support-form-javascript" />
</xsl:template>
<xsl:template match="country-list-europe">
<xsl:call-template name="country-list-europe" />
</xsl:template>
<xsl:template match="country-list-other-continents">
<xsl:call-template name="country-list-other-continents" />
</xsl:template>
<!-- End apply support page rules -->
<!-- HTML body -->
<!--<xsl:template match="body">-->
<xsl:template name="fsfe-body">
<body>
<!--Apply appopriate styles for the whole page -->
<xsl:if test="/buildinfo/document/body/@class">
<xsl:attribute name="class">
<xsl:value-of select="/buildinfo/document/body/@class" />
</xsl:attribute>
</xsl:if>
<xsl:if test="/buildinfo/document/body/@id">
<xsl:attribute name="id"><xsl:value-of select="/buildinfo/document/body/@id" /></xsl:attribute>
</xsl:if>
<!-- For pages used on external web servers, use absolute URLs -->
<xsl:variable name="urlprefix"><xsl:if test="/buildinfo/document/@external">https://fsfe.org</xsl:if></xsl:variable>
<!-- 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="id">translations</xsl:attribute>
<xsl:attribute name="class">alert</xsl:attribute>
<xsl:element name="a">
<xsl:attribute name="class">close</xsl:attribute>
<xsl:attribute name="data-toggle">collapse</xsl:attribute>
<xsl:attribute name="data-target">#translations</xsl:attribute>
<xsl:attribute name="href">#</xsl:attribute>
×
</xsl:element>
<xsl:element name="a">
<xsl:attribute name="class">contribute-translation</xsl:attribute>
<xsl:attribute name="href">/contribute/translators/</xsl:attribute>
<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'translate'" /></xsl:call-template>
</xsl:element>
<xsl:element name="ul">
<xsl:for-each select="/buildinfo/trlist/tr">
<xsl:sort select="@id" />
<xsl:choose>
<xsl:when test="@id=/buildinfo/@language">
<xsl:element name="li">
<xsl:value-of select="." disable-output-escaping="yes"/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="li">
<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:element>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:element>
<!--/ul-->
</xsl:element>
<!--/div#translations-->
<xsl:element name="header">
<xsl:attribute name="id">top</xsl:attribute>
<xsl:element name="nav">
<xsl:attribute name="id">menu</xsl:attribute>
<xsl:attribute name="role">navigation</xsl:attribute>
<xsl:element name="div">
<xsl:attribute name="id">direct-links</xsl:attribute>
<xsl:element name="span">
<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'go-to'" /></xsl:call-template>
</xsl:element>
<xsl:element name="a">
<xsl:attribute name="href">#menu-list</xsl:attribute>
<xsl:attribute name="id">direct-to-menu-list</xsl:attribute>
<xsl:attribute name="data-toggle">collapse</xsl:attribute>
<xsl:attribute name="data-target">#menu-list</xsl:attribute>
<xsl:element name="i">
<xsl:attribute name="class">fa fa-bars fa-lg</xsl:attribute>
</xsl:element>
<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'menu'" /></xsl:call-template>
</xsl:element>
<xsl:element name="a">
<xsl:attribute name="href">#content</xsl:attribute>
<xsl:attribute name="id">direct-to-content</xsl:attribute>
<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'content'" /></xsl:call-template>
</xsl:element>
<xsl:element name="a">
<xsl:attribute name="href">#full-menu</xsl:attribute>
<xsl:attribute name="id">direct-to-full-menu</xsl:attribute>
<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'sitemap'" /></xsl:call-template>
</xsl:element>
<xsl:element name="a">
<xsl:attribute name="href">#source</xsl:attribute>
<xsl:attribute name="id">direct-to-source</xsl:attribute>
<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'page-info'" /></xsl:call-template>
</xsl:element>
<xsl:element name="a">
<xsl:attribute name="href">#translations</xsl:attribute>
<xsl:attribute name="id">direct-to-translations</xsl:attribute>
<xsl:attribute name="data-toggle">collapse</xsl:attribute>
<xsl:attribute name="data-target">#translations</xsl:attribute>
<xsl:element name="i">
<xsl:attribute name="class">fa fa-globe fa-lg</xsl:attribute>
</xsl:element>
<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'change-lang'" /></xsl:call-template>
</xsl:element>
<xsl:element name="a">
<xsl:attribute name="href">/</xsl:attribute>
<xsl:attribute name="id">direct-to-home</xsl:attribute>
<xsl:element name="i">
<xsl:attribute name="class">fa fa-home fa-lg</xsl:attribute>
</xsl:element>
<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'fsfeurope'" /></xsl:call-template>
</xsl:element>
</xsl:element>
<!--/div#direct-links-->
<xsl:element name="ul">
<xsl:attribute name="id">menu-list</xsl:attribute>
<xsl:element name="li">
<xsl:element name="a">
<xsl:attribute name="href">/about/about.html</xsl:attribute>
<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'fsfe/about'" /></xsl:call-template>
</xsl:element>
</xsl:element>
<xsl:element name="li">
<xsl:element name="a">
<xsl:attribute name="href">/projects/work.html</xsl:attribute>
<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'fsfe/projects'" /></xsl:call-template>
</xsl:element>
</xsl:element>
<xsl:element name="li">
<xsl:element name="a">
<xsl:attribute name="href">/campaigns/campaigns.html</xsl:attribute>
<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'fsfe/campaigns'" /></xsl:call-template>
</xsl:element>
</xsl:element>
<xsl:element name="li">
<xsl:element name="a">
<xsl:attribute name="href">/contribute/contribute.html</xsl:attribute>
<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'fsfe/help'" /></xsl:call-template>
</xsl:element>
</xsl:element>
<xsl:element name="li">
<xsl:element name="a">
<xsl:attribute name="href">/press/press.html</xsl:attribute>
<xsl:call-template name="fsfe-gettext"><xsl:with-param name="id" select="'fsfe/press'" /></xsl:call-template>
</xsl:element>
</xsl:element>
</xsl:element>
<!--/ul#menu-list-->
<xsl:element name="div">
<xsl:attribute name="id">search</xsl:attribute>
<xsl:element name="form">
<xsl:attribute name="method">get</xsl:attribute>
<xsl:attribute name="action">http://fsfe.yacy.net/yacysearch.html</xsl:attribute>
<xsl:element name="input">
<xsl:attribute name="type">hidden</xsl:attribute>
<xsl:attribute name="name">verify</xsl:attribute>
<xsl:attribute name="value">true</xsl:attribute>
</xsl:element>
<xsl:element name="input">
<xsl:attribute name="type">hidden</xsl:attribute>
<xsl:attribute name="name">maximumRecords</xsl:attribute>
<xsl:attribute name="value">10</xsl:attribute>
</xsl:element>
<xsl:element name="input">
<xsl:attribute name="type">hidden</xsl:attribute>
<xsl:attribute name="name">meanCount</xsl:attribute>
<xsl:attribute name="value">5</xsl:attribute>
</xsl:element>
<xsl:element name="input">
<xsl:attribute name="type">hidden</xsl:attribute>
<xsl:attribute name="name">resource</xsl:attribute>
<xsl:attribute name="value">local</xsl:attribute>
</xsl:element>
<xsl:element name="input">
<xsl:attribute name="type">hidden</xsl:attribute>
<xsl:attribute name="name">prefermaskfilter</xsl:attribute>
<xsl:attribute name="value">.*.<xsl:value-of select="/buildinfo/@language"/>.html</xsl:attribute>
</xsl:element>
<xsl:element name="input">
<xsl:attribute name="type">hidden</xsl:attribute>
<xsl:attribute name="name">prefermaskfilter</xsl:attribute>
<xsl:attribute name="value">.*</xsl:attribute>
</xsl:element>