diff options
Implemented paginated meta article datasource
* paginates article datasource into chunks of two articles
** this is needed to generate a normal blog article stream
** includes index and total pages for each page entry
* to be resolved against the normal article datasource
Diffstat (limited to 'source')
-rw-r--r-- | source/03_meta/paginated_articles.xsl | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/source/03_meta/paginated_articles.xsl b/source/03_meta/paginated_articles.xsl new file mode 100644 index 0000000..ec5a22a --- /dev/null +++ b/source/03_meta/paginated_articles.xsl @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet + version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +> + +<xsl:output + method="xml" + omit-xml-declaration="no" + encoding="UTF-8" + indent="yes" +/> + +<xsl:include href="[utility/datasource.xsl]"/> + +<xsl:variable name="meta"> + <datasource type="main" mode="full" source="target/02_data/articles.xml" target="articles"/> + <target mode="plain" value="paginated_articles.xml"/> +</xsl:variable> + +<xsl:variable name="total" select="floor(count(datasource/articles/entry) div 2)"/> + +<xsl:template match="articles/entry[position() mod 2 = 1]"> + <entry index="{floor(position() div 2)}" total="{$total}"> + <xsl:apply-templates mode="group" select=". | following-sibling::entry[not(position() > 1)]"/> + </entry> +</xsl:template> + +<xsl:template match="articles/entry" mode="group"> + <article handle="{@handle}"/> +</xsl:template> + +</xsl:stylesheet> |