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
-rw-r--r-- | source/03_meta/tags.xsl | 47 | ||||
-rw-r--r-- | source/99_result/page/page.xsl (renamed from source/99_result/pages/page.xsl) | 0 | ||||
-rw-r--r-- | source/99_result/tag/tag.xsl | 49 |
3 files changed, 96 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> diff --git a/source/99_result/pages/page.xsl b/source/99_result/page/page.xsl index 8fced90..8fced90 100644 --- a/source/99_result/pages/page.xsl +++ b/source/99_result/page/page.xsl diff --git a/source/99_result/tag/tag.xsl b/source/99_result/tag/tag.xsl new file mode 100644 index 0000000..45cb247 --- /dev/null +++ b/source/99_result/tag/tag.xsl @@ -0,0 +1,49 @@ +<?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/master.xsl]"/> +<xsl:include href="[utility/date-time.xsl]"/> + +<xsl:variable name="meta"> + <datasource type="main" mode="iterate" source="target/03_meta/tags.xml" target="tag"/> + <datasource type="support" mode="full" source="source/00_content/meta.xml" target="meta"/> + <target mode="xpath" value="xalan:nodeset($datasource)/datasource/tag/entry/@handle"/> +</xsl:variable> + +<xsl:template name="title-text"> + <xsl:value-of select="/datasource/tag/entry/@handle"/> +</xsl:template> + +<xsl:template match="tag/entry"> + <div class="archiv left articlelist archivlist"> + All articles tagged as »<xsl:value-of select="@handle"/>« + <ol> + <xsl:apply-templates select="article"/> + </ol> + </div> +</xsl:template> + +<xsl:template match="article"> + <li> + <xsl:call-template name="format-date"> + <xsl:with-param name="date" select="date"/> + <xsl:with-param name="format" select="'x. M Y'"/> + </xsl:call-template> + ยป <a href="{$url}/article/{@handle}"><xsl:value-of select="title"/></a> + </li> +</xsl:template> + +</xsl:stylesheet> |