view xsls/rss.xsls @ 3052:e835715198f5

Free nginx: fixed RSS links.
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 14 Feb 2024 20:06:27 +0300
parents 5d64d8a856db
children
line wrap: on
line source

<!--
  Copyright (C) Igor Sysoev
  Copyright (C) Nginx, Inc.
  -->

X:stylesheet
    xmlns:date="http://exslt.org/dates-and-times"
    exclude-result-prefixes="date"
{

X:output indent="no" encoding="utf-8";

X:strip-space elements = "*";

<!--
  -- a current directory of a XSLT script is where the script is stored,
  -- but not where XSLT processor has been started to run the script
  -->
X:param XML = "'../xml'";
X:param YEAR;

X:var SITE = "'http://freenginx.org'";
X:var LINK = "/news/@link";

X:include href = "dirname.xslt";
X:include href = "link.xslt";
X:include href = "menu.xslt";
X:include href = "content.xslt";


X:template = "/news" {
    <rss version="2.0">
    <channel>
    <title> !{@name} </title>
    <link> !{$SITE} </link>
    <description />
    !! "event";
    </channel>
    </rss>
}


X:template = "event[position() &lt;= 10]" {

    X:var year = { !{substring(../event[position()=1]/@date, 1, 4)} }
    X:var y = { !{substring(@date, 1, 4)} }

    X:var page = {
        X:if "$year != $y" {
            !{concat($y, '.html')}
        }
    }

    <item>
        <title> !! "para[1]//text()"; </title>
        <guid> !{$SITE} X:text {/} !{$page} X:text {#} !{@date} </guid>
        <link> !{$SITE} X:text {/} !{$page} X:text {#} !{@date} </link>
        <pubDate>
            !{ concat(date:day-abbreviation(@date), ', ',
                      format-number(date:day-in-month(@date), '00'), ' ',
                      date:month-abbreviation(@date), ' ',
                      date:year(@date),
                      ' 00:00:00 +0300') }
        </pubDate>

        <description>
            X:text disable-output-escaping="yes" {&lt;![CDATA[}
            !{@date}
            !! "para";
            X:text disable-output-escaping="yes" {]]&gt;}
         </description>
    </item>
}


X:template = "event" { }


}