diff options
Diffstat (limited to 'source/00_content/pages/projects')
-rw-r--r-- | source/00_content/pages/projects/binary_mapping.md | 2 | ||||
-rw-r--r-- | source/00_content/pages/projects/codepoint_iterator.md | 2 | ||||
-rw-r--r-- | source/00_content/pages/projects/input_xslt.md | 26 | ||||
-rw-r--r-- | source/00_content/pages/projects/simple_parser.md | 2 | ||||
-rw-r--r-- | source/00_content/pages/projects/trie.md | 2 |
5 files changed, 26 insertions, 8 deletions
diff --git a/source/00_content/pages/projects/binary_mapping.md b/source/00_content/pages/projects/binary_mapping.md index 1b32266..c178236 100644 --- a/source/00_content/pages/projects/binary_mapping.md +++ b/source/00_content/pages/projects/binary_mapping.md @@ -6,7 +6,7 @@ These structures can then be traversed using integrated containers and iterators A explanation of an earlier version of this template library can be found on this [blog]. The source code is available via both [Github] and [cgit]. -### Current features +## Current features * Support for any kind of flat structure that can be expressed using integral types and arbitrarily sized byte-arrays * Support for serialization in either big or little endianess diff --git a/source/00_content/pages/projects/codepoint_iterator.md b/source/00_content/pages/projects/codepoint_iterator.md index f5b08ca..e202571 100644 --- a/source/00_content/pages/projects/codepoint_iterator.md +++ b/source/00_content/pages/projects/codepoint_iterator.md @@ -4,7 +4,7 @@ The source code is available on both my [Github] profile and [cgit]. -### Current features +## Current features * Bidirectional iteration through unicode codepoints * The class itself does not rely on any external libraries diff --git a/source/00_content/pages/projects/input_xslt.md b/source/00_content/pages/projects/input_xslt.md index 802ceac..70d733e 100644 --- a/source/00_content/pages/projects/input_xslt.md +++ b/source/00_content/pages/projects/input_xslt.md @@ -1,12 +1,30 @@ # InputXSLT -…is a proof-of-concept implementation of external file access functions for XSLT based on Apache xalan and xerces. +…is a Apache Xalan based XSLT extension enabling access to external commands, the filesystem and calling further transformations from inside a transformation. -It is used to generate the whole website you are currently viewing and is available via [Github] or [cgit]. +It is used as the base for the static site generation system used to generate the whole website you are currently viewing and is available via [Github] or [cgit]. -### Why? +## Why? -Contrary to popular opinion I actually like XSLT as a content transformation language and have built - amongst other things - my personal website on top of it. While I used the XSLT based Symphony CMS for that particular endeavour, the intention behind the experiment is to develop XSLT extensions enabling the development of static site generators using XSLT as both a template and application language. The fact that you are currently reading this page proves that this is indeed possible. +Contrary to popular opinion I actually like XSLT as a content transformation language and have built - amongst other things - most of my website projects on top of it. While I used the XSLT based [Symphony CMS] for most of these endeavours, the intention behind InputXSLT was to develop XSLT extensions enabling the development of static site generators using XSLT as both a template and application language. The fact that you are currently reading this page proves that this is indeed possible. + +## Overview + +The following table summarizes all the external functions provided by InputXSLT. They are available under the `InputXSLT` namespace after including `function.inputxslt.application` into the stylesheet element. + +|Function |Description | +|`read-file` |Reading plain text files as text and XML files as node trees | +|`read-directory` |Traversing filesystem directories | +|`external-command` |Executing external commands including support for providing the input stream and capturing the output stream | +|`write-file` |Committing plain text or node trees to the filesystem | +|`generate` |Calling transformations including support for capturing the result or committing it directly to the filesystem| + +The `ixslt` XSLT frontent provided by InputXSLT also implements a custom include entity resolver alongside to an easy to use interface for implementing further custom extension functions. + +## Tradeoffs and compromises + +All external functions offered by InputXSLT can be accessed using the XPath expression evaluation subsystems of the XSLT language. While in some cases XSL extension elements would have been the primary choice limitations in the C++ implementation of the Apache Xalan XSLT library made the usage of external functions the path of least resistance. In practice external functions like the one used to call other transformations are wrapped inside utility templates and as such may be used as if they where implemented as extension elements. All other functions like the ones used to access the filesystem fit better within a XPath-expression context and are as such implemented in the most fitting way. [Github]: https://github.com/KnairdA/InputXSLT [cgit]: http://code.kummerlaender.eu/InputXSLT +[Symphony CMS]: http://getsymphony.com diff --git a/source/00_content/pages/projects/simple_parser.md b/source/00_content/pages/projects/simple_parser.md index 4ceb226..ea4df53 100644 --- a/source/00_content/pages/projects/simple_parser.md +++ b/source/00_content/pages/projects/simple_parser.md @@ -6,7 +6,7 @@ The term is parsed by generating a binary expression tree using the Shunting-Yar This application marks the first steps in C++ I took a couple of years back and is available on [Github] or [cgit]. -### Current features +## Current features * Calculating terms with basic operators while respecting the priority of each operator * Support for parentheses diff --git a/source/00_content/pages/projects/trie.md b/source/00_content/pages/projects/trie.md index 8675203..7b30a3a 100644 --- a/source/00_content/pages/projects/trie.md +++ b/source/00_content/pages/projects/trie.md @@ -4,7 +4,7 @@ The implementation may be found on [Github] or [cgit]. -### Current features +## Current features * Specializable tree element type * Adding, removing and resolving paths in the prefix tree |