<feed xmlns='http://www.w3.org/2005/Atom'>
<title>InputXSLT/dummy, branch master</title>
<subtitle>XSLT extensions for static site generation</subtitle>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/'/>
<entry>
<title>Implemented black-box test cases</title>
<updated>2014-05-08T19:16:31+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-05-08T19:16:31+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=947603b5d7f05053a93a3cfe257fa7ab11304a90'/>
<id>947603b5d7f05053a93a3cfe257fa7ab11304a90</id>
<content type='text'>
* the directories below "./test" contain test cases
** "transformation.xsl" and the expected result as "reference.xml"
** tests are performed by "check.sh"
*** returns diff on error
* this system enables simple verification of external function results
** way simpler than C++ unit tests would be in this scenario
* expanded cmake instructions to automatically execute the test cases
* old example transformation was removed
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* the directories below "./test" contain test cases
** "transformation.xsl" and the expected result as "reference.xml"
** tests are performed by "check.sh"
*** returns diff on error
* this system enables simple verification of external function results
** way simpler than C++ unit tests would be in this scenario
* expanded cmake instructions to automatically execute the test cases
* old example transformation was removed
</pre>
</div>
</content>
</entry>
<entry>
<title>Added basic parameter taking overload of TransformationFacade::generate</title>
<updated>2014-05-01T16:14:33+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-05-01T16:14:33+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=e9c4e2b716798002c9ccbf96ee509eb91ad56553'/>
<id>e9c4e2b716798002c9ccbf96ee509eb91ad56553</id>
<content type='text'>
* XSLT stylesheets may be provided with a set of initial parameters
** these parameters can be provided as the second argument to the generate member method in the form of a string to string mapping
** the XSLT standard also permitts number and node set types as value arguments of such input parameters but this is not supported by this change
* expanded test transformation to demonstrate this feature
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* XSLT stylesheets may be provided with a set of initial parameters
** these parameters can be provided as the second argument to the generate member method in the form of a string to string mapping
** the XSLT standard also permitts number and node set types as value arguments of such input parameters but this is not supported by this change
* expanded test transformation to demonstrate this feature
</pre>
</div>
</content>
</entry>
<entry>
<title>Changed namespace for external functions to InputXSLT</title>
<updated>2014-05-01T14:22:41+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-05-01T14:22:41+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=29a6c1ab8b82491bcd54ad027e45644fde09ef59'/>
<id>29a6c1ab8b82491bcd54ad027e45644fde09ef59</id>
<content type='text'>
* "InputXSLT" is defined as "function.inputxslt.application"
* functions can now be accessed like "InputXSLT:read-file('../')"
* updated test transformation accordingly
* the XML standard does not require namespaces to be real, valid HTTP-URIs but treats them as plain strings
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* "InputXSLT" is defined as "function.inputxslt.application"
* functions can now be accessed like "InputXSLT:read-file('../')"
* updated test transformation accordingly
* the XML standard does not require namespaces to be real, valid HTTP-URIs but treats them as plain strings
</pre>
</div>
</content>
</entry>
<entry>
<title>Simplified external function result node set</title>
<updated>2014-04-29T17:24:58+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-04-29T17:24:58+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=ddfe25807ef90ddd3d10fd4532875ffdb5d5e9c5'/>
<id>ddfe25807ef90ddd3d10fd4532875ffdb5d5e9c5</id>
<content type='text'>
* all functions return a single "error" node in the case that something went wrong
* otherwise they return one or more "result" nodes that contain the function results and may be distinguished by one or more attributes
* this makes handling the return values easier and more pleasing to the eye as not everything has to be prefixed by "self::*"
* updated test transformation accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* all functions return a single "error" node in the case that something went wrong
* otherwise they return one or more "result" nodes that contain the function results and may be distinguished by one or more attributes
* this makes handling the return values easier and more pleasing to the eye as not everything has to be prefixed by "self::*"
* updated test transformation accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Added status information to external read-xml-file function</title>
<updated>2014-04-27T15:24:30+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-04-27T15:24:30+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=947a8389728ff7d052fa820f598da3c17802f3d1'/>
<id>947a8389728ff7d052fa820f598da3c17802f3d1</id>
<content type='text'>
* XML tree is contained below the _content_ node if read was successful
** status is set to error otherwise
* updated test transformation accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* XML tree is contained below the _content_ node if read was successful
** status is set to error otherwise
* updated test transformation accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Added status information to external read-directory function</title>
<updated>2014-04-26T20:07:13+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-04-26T20:07:13+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=5fde046561caa11a58abd13cf1f469fdce5c53f1'/>
<id>5fde046561caa11a58abd13cf1f469fdce5c53f1</id>
<content type='text'>
* updated test transformation accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* updated test transformation accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Converted external read-file function output into a node set</title>
<updated>2014-04-26T18:06:17+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-04-26T18:06:17+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=eba5513f82f0e1458543e8646db0317d7211cf96'/>
<id>eba5513f82f0e1458543e8646db0317d7211cf96</id>
<content type='text'>
* A call to _read-file_ now returns a _content_ and _status_ node
** this enables XSL transformations to easily react to io related errors
* fixed bug in path resolution
** boost::filesystem _canonical_ method is throwing and exception when the given path does not exist, this pulled down the whole stack
** replaced call to _canonical_ with call to _absolute_ which does not have this requirement
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* A call to _read-file_ now returns a _content_ and _status_ node
** this enables XSL transformations to easily react to io related errors
* fixed bug in path resolution
** boost::filesystem _canonical_ method is throwing and exception when the given path does not exist, this pulled down the whole stack
** replaced call to _canonical_ with call to _absolute_ which does not have this requirement
</pre>
</div>
</content>
</entry>
<entry>
<title>Implemented global DOM document cache</title>
<updated>2014-04-26T09:21:10+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-04-26T09:21:10+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=0b611b7bd28851fe8096b3d2c121c68e231ada11'/>
<id>0b611b7bd28851fe8096b3d2c121c68e231ada11</id>
<content type='text'>
* the plan to return XML-nodes from each external function requires a better way to manage the lifetime of many xerces DOM document instances and their support class instances
** this is why DomDocumentCache and DomDocumentCache::item were implemented
** based on std::map so we can easily access the result of old function calls
* changed external read-directory function to return the children of the document node instead of the document node itself
** removes unnecessary cruft in function calls
** will make returning status codes alongside the function result more pleasing to the eye
* updated test transformation to reflect new features
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* the plan to return XML-nodes from each external function requires a better way to manage the lifetime of many xerces DOM document instances and their support class instances
** this is why DomDocumentCache and DomDocumentCache::item were implemented
** based on std::map so we can easily access the result of old function calls
* changed external read-directory function to return the children of the document node instead of the document node itself
** removes unnecessary cruft in function calls
** will make returning status codes alongside the function result more pleasing to the eye
* updated test transformation to reflect new features
</pre>
</div>
</content>
</entry>
<entry>
<title>Expanded FunctionReadDirectory class to return files and directories</title>
<updated>2014-04-24T19:59:46+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-04-24T19:59:46+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=ff92d0af44fa454d066f6ee3fe2becd97206b64e'/>
<id>ff92d0af44fa454d066f6ee3fe2becd97206b64e</id>
<content type='text'>
* they are marked appropriately by a _type_ attribute
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* they are marked appropriately by a _type_ attribute
</pre>
</div>
</content>
</entry>
<entry>
<title>Implemented basic XML output of external read-directory function</title>
<updated>2014-04-22T20:49:56+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-04-22T20:49:56+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=34b2f97ac57489d7c9555a3cb0c92c808a4948ea'/>
<id>34b2f97ac57489d7c9555a3cb0c92c808a4948ea</id>
<content type='text'>
* output is generated from XML hand-generated in a std::stringstream
** while this works reasonably well it is not how it should by done, i.e. this will have to be reimplemented using xerces / xalan constructs
** =&gt; this is intended to try out how a read-directory could work in a XSLT context
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* output is generated from XML hand-generated in a std::stringstream
** while this works reasonably well it is not how it should by done, i.e. this will have to be reimplemented using xerces / xalan constructs
** =&gt; this is intended to try out how a read-directory could work in a XSLT context
</pre>
</div>
</content>
</entry>
<entry>
<title>Implemented basic external directory traversal function</title>
<updated>2014-04-21T19:47:20+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-04-21T19:47:20+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=7142544d43b431df44d34921b0f3012fa1e0137d'/>
<id>7142544d43b431df44d34921b0f3012fa1e0137d</id>
<content type='text'>
* _read-directory_ lists all files in a given directory
** currently text-only output, xml planned
* improved FilesystemContext path resolution (relative path is fully resolved by boost::filesystem)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* _read-directory_ lists all files in a given directory
** currently text-only output, xml planned
* improved FilesystemContext path resolution (relative path is fully resolved by boost::filesystem)
</pre>
</div>
</content>
</entry>
<entry>
<title>Implemented support for modifying external function base path</title>
<updated>2014-04-20T11:09:32+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-04-20T11:09:32+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=29a9fb20b4c8414f2590886e43ae86794a53db89'/>
<id>29a9fb20b4c8414f2590886e43ae86794a53db89</id>
<content type='text'>
* one expects a read-file function to work relative to the directory the transformation is located and not to the executable's location
** from the perspective of the user the transformation is the application, not the actual executable
* removed PlattformGuard struct from TransformerGuard (now TransformerFacade)
* TransformerFacade is instatiated with the appropriate relative working path
** i.e. it will have to be instantiated for every directory containing one or more transformations
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* one expects a read-file function to work relative to the directory the transformation is located and not to the executable's location
** from the perspective of the user the transformation is the application, not the actual executable
* removed PlattformGuard struct from TransformerGuard (now TransformerFacade)
* TransformerFacade is instatiated with the appropriate relative working path
** i.e. it will have to be instantiated for every directory containing one or more transformations
</pre>
</div>
</content>
</entry>
<entry>
<title>Implemented basic XML reading capabilities</title>
<updated>2014-04-18T17:51:24+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-04-18T17:51:24+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=6dd832dd0adb35f63148a0e7bd5bdcfb28516c3b'/>
<id>6dd832dd0adb35f63148a0e7bd5bdcfb28516c3b</id>
<content type='text'>
* command "read-xml-file" reads a XML file and allows it to be transformed by the calling XSLT
* this will allow workflows like the following:
** a tranformation reads all the markdown files in a directory
** these markdown files are converted to a xml representation by a external function calling a appropriate C++ markdown parser
** the XML representation of each markdown file is converted to XHTML inside the XSL transformation
** ... and embedded into the output XHTML document
** =&gt; all inside a single XSL tranformation
*** i.e. it is provided with only a empty dummy XML input file and fetches the actual input by itself
* as all current code contained within this repository this is just a quick and dirty proof-of-concept and not in any way good code
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* command "read-xml-file" reads a XML file and allows it to be transformed by the calling XSLT
* this will allow workflows like the following:
** a tranformation reads all the markdown files in a directory
** these markdown files are converted to a xml representation by a external function calling a appropriate C++ markdown parser
** the XML representation of each markdown file is converted to XHTML inside the XSL transformation
** ... and embedded into the output XHTML document
** =&gt; all inside a single XSL tranformation
*** i.e. it is provided with only a empty dummy XML input file and fetches the actual input by itself
* as all current code contained within this repository this is just a quick and dirty proof-of-concept and not in any way good code
</pre>
</div>
</content>
</entry>
<entry>
<title>Added cmake build instructions</title>
<updated>2014-04-18T11:50:57+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-04-18T11:50:57+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=e886ac3a4f2dacc79cf174b1257146fd91bf6b7c'/>
<id>e886ac3a4f2dacc79cf174b1257146fd91bf6b7c</id>
<content type='text'>
* changed relative paths of input files to accomodate builds inside a separate directory
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* changed relative paths of input files to accomodate builds inside a separate directory
</pre>
</div>
</content>
</entry>
<entry>
<title>First commit of _InputXSLT_</title>
<updated>2014-04-17T19:51:20+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-04-17T19:51:20+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=9648c804a23278fcdf66e0f78c350e2ddce492ee'/>
<id>9648c804a23278fcdf66e0f78c350e2ddce492ee</id>
<content type='text'>
* quick and dirty proof-of-concept for adding plain-file access to XSLT
** based on Apache Xalan XSLT processor
* The idea is to create something like a static counterpart to Symphony CMS
* Adding functions to XSLT for file system, plain file and binary file (read)-access
* This project aims to test how such functionality can be integrated into XSLT
** if it works it could be developed into a nice static content transformation system
* Contrary to the popular opinion I actually like XML and XSLT when used responsibly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* quick and dirty proof-of-concept for adding plain-file access to XSLT
** based on Apache Xalan XSLT processor
* The idea is to create something like a static counterpart to Symphony CMS
* Adding functions to XSLT for file system, plain file and binary file (read)-access
* This project aims to test how such functionality can be integrated into XSLT
** if it works it could be developed into a nice static content transformation system
* Contrary to the popular opinion I actually like XML and XSLT when used responsibly
</pre>
</div>
</content>
</entry>
</feed>
