summaryrefslogtreecommitdiff
path: root/source/01_raw
diff options
context:
space:
mode:
authorAdrian Kummerlaender2017-02-11 22:22:27 +0100
committerAdrian Kummerlaender2017-02-11 22:22:27 +0100
commit490963c1550efffe046179ced9b39573185e3e1d (patch)
treea5d7ed4bd1dc7408a77dda09b22ae0d332938925 /source/01_raw
downloadtree.kummerlaender.eu-490963c1550efffe046179ced9b39573185e3e1d.tar
tree.kummerlaender.eu-490963c1550efffe046179ced9b39573185e3e1d.tar.gz
tree.kummerlaender.eu-490963c1550efffe046179ced9b39573185e3e1d.tar.bz2
tree.kummerlaender.eu-490963c1550efffe046179ced9b39573185e3e1d.tar.lz
tree.kummerlaender.eu-490963c1550efffe046179ced9b39573185e3e1d.tar.xz
tree.kummerlaender.eu-490963c1550efffe046179ced9b39573185e3e1d.tar.zst
tree.kummerlaender.eu-490963c1550efffe046179ced9b39573185e3e1d.zip
Initial implementation of a tree-like website generator based on InputXSLT
The foundation was forked from `blog.kummerlaender.eu`. Currently generates arbitrarily nested markdown documents in addition to overview pages for branches in the tree. This includes resolution of branch node contents.
Diffstat (limited to 'source/01_raw')
-rw-r--r--source/01_raw/tree.xsl51
1 files changed, 51 insertions, 0 deletions
diff --git a/source/01_raw/tree.xsl b/source/01_raw/tree.xsl
new file mode 100644
index 0000000..f54157b
--- /dev/null
+++ b/source/01_raw/tree.xsl
@@ -0,0 +1,51 @@
+<?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:include href="[utility/formatter.xsl]"/>
+<xsl:include href="[utility/datasource.xsl]"/>
+
+<xsl:variable name="meta">
+ <datasource type="main" mode="xpath" source="$source_tree/directory[@name = '00_content']/directory" target="files"/>
+ <target mode="plain" value="tree.xml"/>
+</xsl:variable>
+
+<xsl:template match="@*|node()" mode="tree">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="file[@extension = '.md']" mode="tree">
+ <xsl:variable name="content">
+ <xsl:call-template name="formatter">
+ <xsl:with-param name="source" select="InputXSLT:read-file(./full)/text()"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <leaf name="{@name}">
+ <title>
+ <xsl:value-of select="xalan:nodeset($content)/h1"/>
+ </title>
+ <content>
+ <xsl:copy-of select="xalan:nodeset($content)/*[name() != 'h1']"/>
+ </content>
+ </leaf>
+</xsl:template>
+
+<xsl:template match="directory" mode="tree">
+ <branch name="{@name}">
+ <xsl:apply-templates select="node()" mode="tree"/>
+ </branch>
+</xsl:template>
+
+<xsl:template match="files/directory[@name = 'tree']">
+ <xsl:apply-templates select="node()" mode="tree"/>
+</xsl:template>
+
+</xsl:stylesheet>