diff options
Implemented tag overview page generation
* added "tags.xsl" meta datasource
** augments tags and their articles extracted from the content tree with article data from the article datasource
* added basic tag page template
* renamed "pages" directory to "page" as it is more intuitive from a user perspective
Diffstat (limited to 'source/03_meta')
-rw-r--r-- | source/03_meta/tags.xsl | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/source/03_meta/tags.xsl b/source/03_meta/tags.xsl new file mode 100644 index 0000000..4bed65c --- /dev/null +++ b/source/03_meta/tags.xsl @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet + version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xalan="http://xml.apache.org/xalan" + xmlns:InputXSLT="function.inputxslt.application" + exclude-result-prefixes="xalan InputXSLT" +> + +<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/01_files/source.xml" target="files"/> + <datasource type="support" mode="full" source="target/02_data/articles.xml" target="articles"/> + <target mode="plain" value="tags.xml"/> +</xsl:variable> + +<xsl:template name="get_article_data"> + <xsl:param name="handle"/> + + <xsl:copy-of select="ancestor::node()[4]/articles/entry[@handle = $handle]/*[self::title | self::date]"/> +</xsl:template> + +<xsl:template match="files/tags/*"> + <entry handle="{name()}"> + <xsl:apply-templates /> + </entry> +</xsl:template> + +<xsl:template match="tags/*/file[./extension = '.md']"> + <xsl:variable name="handle" select="substring(./name, 12, string-length(./name))"/> + + <article handle="{$handle}"> + <xsl:call-template name="get_article_data"> + <xsl:with-param name="handle" select="$handle"/> + </xsl:call-template> + </article> +</xsl:template> + +</xsl:stylesheet> |