diff options
Diffstat (limited to 'source/01_data')
| -rw-r--r-- | source/01_data/articles.xsl | 92 | ||||
| -rw-r--r-- | source/01_data/pages.xsl | 36 | ||||
| -rw-r--r-- | source/01_data/tags.xsl | 26 | 
3 files changed, 154 insertions, 0 deletions
| diff --git a/source/01_data/articles.xsl b/source/01_data/articles.xsl new file mode 100644 index 0000000..8e65f40 --- /dev/null +++ b/source/01_data/articles.xsl @@ -0,0 +1,92 @@ +<?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/helper.xsl]"/> +<xsl:include href="[utility/datasource.xsl]"/> + +<xsl:variable name="meta"> +	<datasource type="main"  mode="expression" source="$root/source/directory[1]/directory" target="files"/> +	<target     mode="plain" value="articles.xml"/>  +</xsl:variable> + +<xsl:template match="@*|node()" mode="embellish"> +	<xsl:copy> +		<xsl:apply-templates select="@*|node()" mode="embellish"/> +	</xsl:copy> +</xsl:template> + +<xsl:template match="pre" mode="embellish"> +	<xsl:variable name="formatted_code"> +		<xsl:call-template name="formatter"> +			<xsl:with-param name="format"> +				<xsl:text>highlight --out-format=xhtml --inline-css --style=molokai --fragment --enclose-pre --wrap-simple --syntax=</xsl:text> +				<xsl:choose> +					<xsl:when test="code/@class"> +						<xsl:value-of select="substring(code/@class, 10, string-length(code/@class))"/> +					</xsl:when> +					<xsl:otherwise> +						<xsl:text>txt</xsl:text> +					</xsl:otherwise> +				</xsl:choose> +			</xsl:with-param> +			<xsl:with-param name="source" select="code/text()"/> +		</xsl:call-template> +	</xsl:variable> + +	<pre> +		<xsl:copy-of select="xalan:nodeset($formatted_code)/pre/node()"/> +	</pre> +</xsl:template> + +<xsl:template name="list_tags"> +	<xsl:param name="path"/> + +	<xsl:for-each select="$root/files/directory[@name = 'tags']/*[./file/full = $path]"> +		<tag><xsl:value-of select="@name"/></tag> +	</xsl:for-each> +</xsl:template> + +<xsl:template match="files/directory[@name = 'articles']"> +	<xsl:apply-templates select="file"> +		<xsl:sort select="@name" order="descending"/> +	</xsl:apply-templates> +</xsl:template> + +<xsl:template match="files/directory[@name = 'articles']/file[@extension = '.md']"> +	<xsl:variable name="content"> +		<xsl:call-template name="formatter"> +			<xsl:with-param name="format">kramdown</xsl:with-param> +			<xsl:with-param name="source" select="InputXSLT:read-file(./full)/text()"/> +		</xsl:call-template> +	</xsl:variable> + +	<entry handle="{substring(@name, 12, string-length(@name))}"> +		<title> +			<xsl:value-of select="xalan:nodeset($content)/h1"/> +		</title> +		<date> +			<full> +				<xsl:value-of select="substring(@name, 0, 11)"/> +			</full> +			<year> +				<xsl:value-of select="substring(@name, 0, 5)"/> +			</year> +		</date> +		<tags> +			<xsl:call-template name="list_tags"> +				<xsl:with-param name="path" select="./full"/> +			</xsl:call-template> +		</tags> +		<content> +			<xsl:apply-templates select="xalan:nodeset($content)/*[name() != 'h1']" mode="embellish"/> +		</content> +	</entry> +</xsl:template> + +</xsl:stylesheet> diff --git a/source/01_data/pages.xsl b/source/01_data/pages.xsl new file mode 100644 index 0000000..cdfa6d4 --- /dev/null +++ b/source/01_data/pages.xsl @@ -0,0 +1,36 @@ +<?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/helper.xsl]"/> +<xsl:include href="[utility/datasource.xsl]"/> + +<xsl:variable name="meta"> +	<datasource type="main"  mode="expression" source="$root/source/directory[1]/directory" target="files"/> +	<target     mode="plain" value="pages.xml"/>  +</xsl:variable> + +<xsl:template match="files/directory[@name = 'pages']//file[@extension = '.md']"> +	<xsl:variable name="content"> +		<xsl:call-template name="formatter"> +			<xsl:with-param name="format">kramdown</xsl:with-param> +			<xsl:with-param name="source" select="InputXSLT:read-file(./full)/text()"/> +		</xsl:call-template> +	</xsl:variable> + +	<entry handle="{@name}"> +		<title> +			<xsl:value-of select="xalan:nodeset($content)/h1"/> +		</title> +		<content> +			<xsl:copy-of select="xalan:nodeset($content)/*[name() != 'h1']"/> +		</content> +	</entry> +</xsl:template> + +</xsl:stylesheet> diff --git a/source/01_data/tags.xsl b/source/01_data/tags.xsl new file mode 100644 index 0000000..bfd227b --- /dev/null +++ b/source/01_data/tags.xsl @@ -0,0 +1,26 @@ +<?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="expression" source="$root/source/directory[1]/directory" target="files"/> +	<target     mode="plain" value="tags.xml"/>  +</xsl:variable> + +<xsl:template match="files/directory[@name = 'tags']/directory"> +	<entry handle="{@name}"> +		<xsl:apply-templates select="file"> +			<xsl:sort select="@name" order="descending"/> +		</xsl:apply-templates> +	</entry> +</xsl:template> + +<xsl:template match="directory[@name = 'tags']/*/file[@extension = '.md']"> +	<article handle="{substring(@name, 12, string-length(@name))}"/> +</xsl:template> + +</xsl:stylesheet> | 
