2020-04-27 19:53:42 +00:00
<?xml version="1.0" encoding="UTF-8"?>
2007-03-03 14:52:27 +00:00
2013-01-17 23:13:14 +00:00
<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">
2014-06-23 10:10:57 +00:00
2020-05-18 20:08:26 +00:00
<!-- 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>
2020-04-29 09:23:52 +00:00
<xsl:include href= "build/xslt/fsfe_head.xsl" />
<xsl:include href= "build/xslt/fsfe_body.xsl" />
<xsl:include href= "build/xslt/gettext.xsl" />
<xsl:include href= "build/xslt/static-elements.xsl" />
2020-05-06 17:05:03 +00:00
<xsl:include href= "build/xslt/related.xsl" />
2020-04-27 16:37:23 +00:00
<!-- 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" />
2014-09-15 11:23:09 +00:00
2019-10-03 13:44:46 +00:00
<!-- EXTRACT / DESCRIPTION of each page -->
2019-10-03 13:25:33 +00:00
<xsl:variable name= "metadesc" >
<!-- Get the meta element description -->
<xsl:value-of select= "/buildinfo/document/head/meta[@name = 'description']/@content" />
</xsl:variable>
2019-10-03 13:44:46 +00:00
<!-- if there is a meta description, take that as an extract -->
2019-10-03 13:25:33 +00:00
<xsl:variable name= "extract" >
<xsl:choose >
2019-10-03 13:44:46 +00:00
<!-- case 1: if there is a meta description, take that -->
2019-10-03 13:25:33 +00:00
<xsl:when test= "$metadesc != ''" >
<xsl:value-of select= "$metadesc" />
</xsl:when>
<xsl:otherwise >
<!-- take a first extract which should be sufficient for most pages -->
<xsl:variable name= "extract1" >
<!-- retrieve the first 200 letters of the first p element after h1 -->
2019-10-03 13:44:46 +00:00
<xsl:value-of select= "substring(normalize-space(/buildinfo/document/body/h1[1]/following::p[1]),1,155)" />
2019-10-03 13:25:33 +00:00
</xsl:variable>
<!-- define cases what happens with which extract length -->
<xsl:choose >
2019-10-03 13:44:46 +00:00
<!-- case 2: first paragraph is long enough -->
<xsl:when test= "string-length($extract1) > 50" >
2019-10-03 13:25:33 +00:00
<xsl:value-of select= "$extract1" />
<xsl:text > ...</xsl:text>
</xsl:when>
2019-10-03 13:44:46 +00:00
<!-- case 3: first paragraph is too short -->
2019-10-03 13:25:33 +00:00
<xsl:otherwise >
<xsl:variable name= "extract2" >
<!-- retrieve the first 200 letters of the *second* p element after h1 -->
2019-10-03 13:44:46 +00:00
<xsl:value-of select= "substring(normalize-space(/buildinfo/document/body/h1[1]/following::p[2]),1,155)" />
2019-10-03 13:25:33 +00:00
</xsl:variable>
<xsl:choose >
2019-10-03 13:44:46 +00:00
<!-- case 3a: second paragraph is long enough -->
<xsl:when test= "string-length($extract2) > 50" >
<!-- Combine $extract1 and $extract2 with max. 155 characters -->
<xsl:value-of select= "substring(normalize-space(concat($extract1, ' ', $extract2)),1,155)" />
<xsl:text > ...</xsl:text>
2019-10-03 13:25:33 +00:00
</xsl:when>
2019-10-03 13:44:46 +00:00
<!-- case 3b: also second extract is too short, so take a default text -->
2019-10-03 13:25:33 +00:00
<xsl:otherwise >
2019-10-03 13:44:46 +00:00
<xsl:text > Free Software Foundation Europe is a charity that empowers users to control technology. We enable people to use, understand, adapt and share software.</xsl:text>
2019-10-03 13:25:33 +00:00
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
2014-06-23 15:55:26 +00:00
<xsl:include href= "build/xslt/fsfe_document.xsl" />
<xsl:include href= "build/xslt/fsfe_headings.xsl" />
<xsl:include href= "build/xslt/fsfe_localmenu.xsl" />
2014-06-23 15:21:46 +00:00
2014-06-22 15:33:35 +00:00
<!-- Do not copy non - HTML elements to output -->
2014-06-23 15:55:26 +00:00
<xsl:include href= "build/xslt/fsfe_nolocal.xsl" />
2014-06-22 15:33:35 +00:00
2018-11-28 10:51:11 +00:00
<!-- Static elements which can be included everywhere -->
<xsl:template match= "static-element" >
<xsl:variable name= "id" > <xsl:value-of select= "@id" /> </xsl:variable>
2019-09-09 09:44:29 +00:00
<xsl:copy-of select= "/buildinfo/document/set/element[@id=$id]/node()" />
2018-11-28 10:51:11 +00:00
</xsl:template>
2014-01-27 20:37:36 +00:00
2007-03-03 14:52:27 +00:00
</xsl:stylesheet>