diff options
Revamped transformation layout to remove need for the "01_files" level
* "01_files" contained a single "source" transformation which listed the contents of the "00_content" level
** this was unnecessary as the base "list" transformation already lists the contents of all levels
* added new "expression" mode to datasource meta tag processing in the task processing transformation
** this expression modes allows for the evaluation of arbitrary XPath statements
*** e.g. a query to the results of "list.xsl"
* modified base transformation datasource structures to include the level and meta tree
* modified all existing content transformations to query the level-tree instead of the deprecated "source.xml"
** i.e. XPath statements
** the main change is that directories are available as "directory" nodes instead of nodes named by the directory name
* these changes where implemented to simplify the architecture and to increase flexibility
Diffstat (limited to 'source/02_meta/articles.xsl')
-rw-r--r-- | source/02_meta/articles.xsl | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/source/02_meta/articles.xsl b/source/02_meta/articles.xsl new file mode 100644 index 0000000..1a8b8fa --- /dev/null +++ b/source/02_meta/articles.xsl @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet + version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +> + +<xsl:include href="[utility/datasource.xsl]"/> + +<xsl:variable name="meta"> + <datasource type="main" mode="full" source="01_data/articles.xml" target="articles"/> + <target mode="plain" value="articles.xml"/> +</xsl:variable> + +<xsl:key name="years" match="datasource/articles/entry/date/year/text()" use="." /> + +<xsl:template match="articles"> + <xsl:for-each select="entry/date/year/text()[generate-id() = generate-id(key('years',.)[1])]"> + <entry handle="{.}"> + <xsl:call-template name="get_articles"> + <xsl:with-param name="year" select="."/> + </xsl:call-template> + </entry> + </xsl:for-each> +</xsl:template> + +<xsl:template name="get_articles"> + <xsl:param name="year"/> + + <xsl:for-each select="/datasource/articles/entry[date/year = $year]"> + <article handle="{@handle}"> + <title> + <xsl:value-of select="title"/> + </title> + <date> + <xsl:value-of select="date/full"/> + </date> + </article> + </xsl:for-each> +</xsl:template> + +</xsl:stylesheet> |