<feed xmlns='http://www.w3.org/2005/Atom'>
<title>InputXSLT, 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>Replace default.nix by flake</title>
<updated>2022-12-29T10:27:27+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2022-12-29T10:27:27+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=7d41e83b4f62c8f79be4a0e984a11941d55e66dc'/>
<id>7d41e83b4f62c8f79be4a0e984a11941d55e66dc</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix std::unique_ptr custom deleter issue</title>
<updated>2020-04-25T18:42:08+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2020-04-25T18:42:08+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=6d353960542e5c95f29d45b9359db25945a414a4'/>
<id>6d353960542e5c95f29d45b9359db25945a414a4</id>
<content type='text'>
Somehow the previous custom deleter for xercesc::DOMDocument fails
invokable assertions planet a compiler update. A lambda function
with the same signature wors for some reason…
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Somehow the previous custom deleter for xercesc::DOMDocument fails
invokable assertions planet a compiler update. A lambda function
with the same signature wors for some reason…
</pre>
</div>
</content>
</entry>
<entry>
<title>Add Nix derivation</title>
<updated>2018-10-02T17:04:21+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2018-10-02T17:04:21+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=d4f3c3d2f61616e09d01cc927ba0dbdc393d25a0'/>
<id>d4f3c3d2f61616e09d01cc927ba0dbdc393d25a0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix `read_directory` testcase</title>
<updated>2018-10-02T17:04:04+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2018-10-02T17:04:04+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=c6642afaa2d8af9bcde6a805666dfe3566ce4c6e'/>
<id>c6642afaa2d8af9bcde6a805666dfe3566ce4c6e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove inline warnings</title>
<updated>2018-10-02T17:03:53+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2018-10-02T17:03:53+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=a4f2280e75e389e06c00e720c80601ab6b69b85e'/>
<id>a4f2280e75e389e06c00e720c80601ab6b69b85e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add explicit pthread linkage</title>
<updated>2018-01-21T17:38:54+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2018-01-21T17:38:54+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=678c15c7cbcad6ab9b8eee3f1ec3cfb88d2c5e1f'/>
<id>678c15c7cbcad6ab9b8eee3f1ec3cfb88d2c5e1f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Adapt `FunctionExternalCommand` to new `boost::process` version</title>
<updated>2017-06-01T14:24:47+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-06-01T14:24:47+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=0973ec45e9bdb7760a5480a14d712373b4990750'/>
<id>0973ec45e9bdb7760a5480a14d712373b4990750</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add installation instructions to CMakeLists</title>
<updated>2016-04-29T18:37:28+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2016-04-29T18:37:28+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=04c22beeb8e4fcbd323e83e756dd649c571bd3d2'/>
<id>04c22beeb8e4fcbd323e83e756dd649c571bd3d2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix `generate` problem caused by _boost_ update</title>
<updated>2016-01-05T20:17:42+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2016-01-05T20:17:42+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=1df71e9b78fd516f9902f42db733f0b02808ad50'/>
<id>1df71e9b78fd516f9902f42db733f0b02808ad50</id>
<content type='text'>
i.e. the directory tree was not correctly created in all circumstances which led to both the `generate` and `write-file` test cases failing. This was combined with some accumulated changes such as the extraction of process context instantiation.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
i.e. the directory tree was not correctly created in all circumstances which led to both the `generate` and `write-file` test cases failing. This was combined with some accumulated changes such as the extraction of process context instantiation.
</pre>
</div>
</content>
</entry>
<entry>
<title>Released `InputXSLT` under the terms of the Apache License 2.0</title>
<updated>2015-01-03T23:05:16+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2015-01-03T23:05:16+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=93af7b2094759d1187c5e9ead8eba6cab557ca18'/>
<id>93af7b2094759d1187c5e9ead8eba6cab557ca18</id>
<content type='text'>
* analogously to the projects required to actually use `InputXSLT`: Apache Xalan and Xerces
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* analogously to the projects required to actually use `InputXSLT`: Apache Xalan and Xerces
</pre>
</div>
</content>
</entry>
<entry>
<title>Replaced custom `Sequence` implementation with C++14 `std::integer_sequence`</title>
<updated>2014-11-13T17:44:33+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-11-13T17:44:33+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=b9d62d5ce1e3f92a8ab34239c6e4044ad57180df'/>
<id>b9d62d5ce1e3f92a8ab34239c6e4044ad57180df</id>
<content type='text'>
* both the `Sequence` and `IndexSequence` helper templates were developed prior to C++14
* as the new standard covers exactly the functionality provided by these templates they should be replaced
** they are used as indexes to the _Xalan_ parameter array in `FunctionBase`
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* both the `Sequence` and `IndexSequence` helper templates were developed prior to C++14
* as the new standard covers exactly the functionality provided by these templates they should be replaced
** they are used as indexes to the _Xalan_ parameter array in `FunctionBase`
</pre>
</div>
</content>
</entry>
<entry>
<title>Removed unnecessary `inline` declarations</title>
<updated>2014-11-09T11:00:22+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-11-09T11:00:22+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=aa7afee1047a2de790a70dceda9079c8d5d01850'/>
<id>aa7afee1047a2de790a70dceda9079c8d5d01850</id>
<content type='text'>
* e.g. member functions defined in the class definition are implicitly marked `inline`
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* e.g. member functions defined in the class definition are implicitly marked `inline`
</pre>
</div>
</content>
</entry>
<entry>
<title>Activated namespace comprehension for all `XercesDOMParser` instances</title>
<updated>2014-10-29T15:11:34+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-10-29T15:11:34+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=71a637be86177e82a8fc0c654639c2fa83c13f5d'/>
<id>71a637be86177e82a8fc0c654639c2fa83c13f5d</id>
<content type='text'>
* this is possibly a breaking change for all applications built on either `FunctionExternalCommand` or `FunctionReadFile`
** e.g. meta datasource XPath queries in _StaticXSLT_ will have to be changed to accomodate this
* the reason for doing this was to fix the behaviour when reading namespaced XML files
** e.g. XSL stylesheets could only be queried with a clunky XPath expression such as `$transformation/self::*[name() = 'xsl:stylesheet']` instead of simply `$transformation/self::xsl:stylesheet`
*** this was caused by the now activated namespace comprehension in `xercesc::XercesDOMParser` which is disabled by default
*** it caused all local node names to be converted into their namespace prefixed version, e.g. `local-name()` returned `xsl:stylesheet` instead of `stylesheet`
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* this is possibly a breaking change for all applications built on either `FunctionExternalCommand` or `FunctionReadFile`
** e.g. meta datasource XPath queries in _StaticXSLT_ will have to be changed to accomodate this
* the reason for doing this was to fix the behaviour when reading namespaced XML files
** e.g. XSL stylesheets could only be queried with a clunky XPath expression such as `$transformation/self::*[name() = 'xsl:stylesheet']` instead of simply `$transformation/self::xsl:stylesheet`
*** this was caused by the now activated namespace comprehension in `xercesc::XercesDOMParser` which is disabled by default
*** it caused all local node names to be converted into their namespace prefixed version, e.g. `local-name()` returned `xsl:stylesheet` instead of `stylesheet`
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed XML declaration handling in FunctionExternalCommand</title>
<updated>2014-10-26T21:23:02+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-10-26T21:23:02+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=1276ea17e58f886d34423eefae92e0b0aa477b9a'/>
<id>1276ea17e58f886d34423eefae92e0b0aa477b9a</id>
<content type='text'>
* `FunctionExternalCommand` failed to offer correct output handling when provided with a valid XML document which included a XML declaration
** `xerces::XercesDOMParser` generated the appropriate errors but they were not handled by `FunctionExternalCommand`
** wrapping is not necessary for full XML documents but is required for invalid XML as returned by e.g. common _Markdown_ processors
*** if wrapping is applied to full XML documents which include a XML declaration the parser and subsequently the complete external function fails
* added error parser handling by making the compilation unit local `importDocumentElement` method return value optional
* added XML declaration detection and handling to `readOutput`
** if XML declaration is detected no wrapping is applied
* added wrapping detection in `FunctionExternalCommand::constructDocument`
** if no wrapping is detected the whole tree is returned as content instead of just returning its child nodes
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* `FunctionExternalCommand` failed to offer correct output handling when provided with a valid XML document which included a XML declaration
** `xerces::XercesDOMParser` generated the appropriate errors but they were not handled by `FunctionExternalCommand`
** wrapping is not necessary for full XML documents but is required for invalid XML as returned by e.g. common _Markdown_ processors
*** if wrapping is applied to full XML documents which include a XML declaration the parser and subsequently the complete external function fails
* added error parser handling by making the compilation unit local `importDocumentElement` method return value optional
* added XML declaration detection and handling to `readOutput`
** if XML declaration is detected no wrapping is applied
* added wrapping detection in `FunctionExternalCommand::constructDocument`
** if no wrapping is detected the whole tree is returned as content instead of just returning its child nodes
</pre>
</div>
</content>
</entry>
<entry>
<title>Changed FunctionExternalCommand stream read order</title>
<updated>2014-10-16T17:20:04+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-10-16T17:20:04+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=bc48696d7f463d0a230193f2173ec8516a2ca4b0'/>
<id>bc48696d7f463d0a230193f2173ec8516a2ca4b0</id>
<content type='text'>
* long outputs to stdout from child processes filled up the `boost::process::pistream` buffer and caused `write` to block
** this issue was circumvented by reading the stream into a `std::stringstream` instance before retrieving the blocking exit status
* modified document import implementation accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* long outputs to stdout from child processes filled up the `boost::process::pistream` buffer and caused `write` to block
** this issue was circumvented by reading the stream into a `std::stringstream` instance before retrieving the blocking exit status
* modified document import implementation accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Split path attribute of FunctionReadFile result tree into base and name</title>
<updated>2014-10-11T21:23:36+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-10-11T21:23:36+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=a4a7ee4f614e85f9952a4a8ea418e263512fc2ba'/>
<id>a4a7ee4f614e85f9952a4a8ea418e263512fc2ba</id>
<content type='text'>
* this is required to be able to resolve paths contained within a file relative to its location
** which is in turn needed to enable BuildXSLT modules without requiring the module transformations to be resolved using IncludeEntityResolver
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* this is required to be able to resolve paths contained within a file relative to its location
** which is in turn needed to enable BuildXSLT modules without requiring the module transformations to be resolved using IncludeEntityResolver
</pre>
</div>
</content>
</entry>
<entry>
<title>Changed FunctionBase FilesystemContext base to working directory</title>
<updated>2014-10-11T21:18:05+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-10-11T21:18:05+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=3c166ed07051b78bfcd40c7cabc376060cd96eb9'/>
<id>3c166ed07051b78bfcd40c7cabc376060cd96eb9</id>
<content type='text'>
* this changes filesystem context resolution for external function execution to be relative to the working directory
** this was changed to enable module support in BuildXSLT
*** ... which is in turn required as a foundation for extracting the detail transformations into a separate "StaticXSLT" application
* added parameter-less FilesystemContext constructor which defaults to the working directory
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* this changes filesystem context resolution for external function execution to be relative to the working directory
** this was changed to enable module support in BuildXSLT
*** ... which is in turn required as a foundation for extracting the detail transformations into a separate "StaticXSLT" application
* added parameter-less FilesystemContext constructor which defaults to the working directory
</pre>
</div>
</content>
</entry>
<entry>
<title>Added constructor supporting arbitrary streams to StreamInputSource</title>
<updated>2014-09-15T18:27:46+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-09-15T18:27:46+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=54900ebb18646b7c6e01103ead559e8cbfa5c947'/>
<id>54900ebb18646b7c6e01103ead559e8cbfa5c947</id>
<content type='text'>
* i.e. it now supports reading transformations from either a file or stdin
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* i.e. it now supports reading transformations from either a file or stdin
</pre>
</div>
</content>
</entry>
<entry>
<title>Updated README.md to reflect the now non-experimental state</title>
<updated>2014-09-14T18:05:31+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-09-14T18:05:31+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=e8c1b77603f3087611108435c0b33c4254468d22'/>
<id>e8c1b77603f3087611108435c0b33c4254468d22</id>
<content type='text'>
* updated dependencies to mention C++14
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* updated dependencies to mention C++14
</pre>
</div>
</content>
</entry>
<entry>
<title>Switched member initialization to std::make_unique</title>
<updated>2014-09-14T17:49:15+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-09-14T17:49:15+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=8ebea90f5cee70654ab9f1c19ed4f89dfc8ffb25'/>
<id>8ebea90f5cee70654ab9f1c19ed4f89dfc8ffb25</id>
<content type='text'>
* i.e. InputXSLT now requires a C++14 supporting compiler / standard library implementation
* this was done while enabling the StreamInputSource to handle all kinds of streams
** this in turn is required to enable e.g. stdin as transformation source while preserving the correct filesystem context
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* i.e. InputXSLT now requires a C++14 supporting compiler / standard library implementation
* this was done while enabling the StreamInputSource to handle all kinds of streams
** this in turn is required to enable e.g. stdin as transformation source while preserving the correct filesystem context
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed xalan::FormatterToXML constructor argument sequence</title>
<updated>2014-09-11T18:12:04+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-09-11T18:12:04+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=ced9f340e88e6011376fb65ae81bf2f2b327ecc0'/>
<id>ced9f340e88e6011376fb65ae81bf2f2b327ecc0</id>
<content type='text'>
* doctypeSystem and doctypePublic were mixed up
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* doctypeSystem and doctypePublic were mixed up
</pre>
</div>
</content>
</entry>
<entry>
<title>Updated README.md to link to correct example repository</title>
<updated>2014-09-07T12:40:42+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-09-07T12:40:42+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=5a4e8d71da060d3cda8d4ecb94e4d6e628e93cae'/>
<id>5a4e8d71da060d3cda8d4ecb94e4d6e628e93cae</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Changed system-ID of primary transformation to working directory</title>
<updated>2014-09-06T12:23:17+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-09-06T12:23:17+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=5e7b8b9558fec9d58716c46666d62a055a39f0be'/>
<id>5e7b8b9558fec9d58716c46666d62a055a39f0be</id>
<content type='text'>
* this change was needed so that one is able to apply transformations located in e.g. a central directory as if they where located in the working directory
** otherwise e.g. the BuildXSLT transformation would have to be copied into every project that requires it
* implemented StreamInputSource wrapper for boost::filesystem::ifstream and xalan::XSLTInputSource
** this is needed because the boost::filesystem::ifstream instance has to exist as long as the xalan::XSLTInputSource it is bound to
** i.e. a simple helper function to instantiate the source and set the working directory would have not been sufficient
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* this change was needed so that one is able to apply transformations located in e.g. a central directory as if they where located in the working directory
** otherwise e.g. the BuildXSLT transformation would have to be copied into every project that requires it
* implemented StreamInputSource wrapper for boost::filesystem::ifstream and xalan::XSLTInputSource
** this is needed because the boost::filesystem::ifstream instance has to exist as long as the xalan::XSLTInputSource it is bound to
** i.e. a simple helper function to instantiate the source and set the working directory would have not been sufficient
</pre>
</div>
</content>
</entry>
<entry>
<title>Added prefix to system ID of node-based XSLTInputSource instances</title>
<updated>2014-09-04T21:32:10+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-09-04T21:32:10+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=216fcea2c8b52a5657d879628a27a76cb1fef2e3'/>
<id>216fcea2c8b52a5657d879628a27a76cb1fef2e3</id>
<content type='text'>
* otherwise include entity resolution fails for node-based xalan::XSLTInputSource instances instantiated by the XObjectValue class
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* otherwise include entity resolution fails for node-based xalan::XSLTInputSource instances instantiated by the XObjectValue class
</pre>
</div>
</content>
</entry>
<entry>
<title>Replaced FunctionTransform by making the target of FunctionGenerate optional</title>
<updated>2014-08-22T22:19:09+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-08-22T22:19:09+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=5a54b5b8150d8bf1ac5db3ac688479b3aca6486d'/>
<id>5a54b5b8150d8bf1ac5db3ac688479b3aca6486d</id>
<content type='text'>
* if the target parameter is not provided FunctionGenerate now performs exactly the same functionality as FunctionTransform
* added "boost::optional&lt;boost::filesystem::path&gt;" specialization to the XObjectValue class
* modified test cases accordingly
* modified README.md accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* if the target parameter is not provided FunctionGenerate now performs exactly the same functionality as FunctionTransform
* added "boost::optional&lt;boost::filesystem::path&gt;" specialization to the XObjectValue class
* modified test cases accordingly
* modified README.md accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Setting the correct work directory in FunctionExternalCommand</title>
<updated>2014-08-20T20:28:15+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-08-20T20:28:15+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=2c89112141530617b51af8c41211c2507ec8c738'/>
<id>2c89112141530617b51af8c41211c2507ec8c738</id>
<content type='text'>
* changed the XObjectValue constructor to accept a pointer to FilesystemContext instead of instantiating the context by itself
* the FilesystemContext is now instantiated in the "callConstructDocument" member method of "FunctionBase"
** a const reference to FilesystemContext is passed to all "constructDocument" member method implementations
* the FilesystemContext is currently only used by FunctionExternal command to set the correct work directory in "boost::process::context"
** this is required so calling external commands from inside a stylesheet works as expected
*** i.e. from inside the directory the stylesheet is located in
* modified all remaining external function implementations accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* changed the XObjectValue constructor to accept a pointer to FilesystemContext instead of instantiating the context by itself
* the FilesystemContext is now instantiated in the "callConstructDocument" member method of "FunctionBase"
** a const reference to FilesystemContext is passed to all "constructDocument" member method implementations
* the FilesystemContext is currently only used by FunctionExternal command to set the correct work directory in "boost::process::context"
** this is required so calling external commands from inside a stylesheet works as expected
*** i.e. from inside the directory the stylesheet is located in
* modified all remaining external function implementations accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Renamed FunctionExternalCommand result root node</title>
<updated>2014-08-18T18:11:18+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-08-18T18:11:18+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=b31f9170c2bc2330442070968d3cb334cadb5faa'/>
<id>b31f9170c2bc2330442070968d3cb334cadb5faa</id>
<content type='text'>
* this change was implemented to match the naming scheme of all other external functions
* updated external text formatter test case accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* this change was implemented to match the naming scheme of all other external functions
* updated external text formatter test case accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed minimum parameter count calculation</title>
<updated>2014-08-17T11:32:22+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-08-17T11:32:22+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=8ed33c3e9e2648a5a0150c05e06c228336e9e9d6'/>
<id>8ed33c3e9e2648a5a0150c05e06c228336e9e9d6</id>
<content type='text'>
* the minimum count of parameters to a external function is the maximum parameter count minus all optional parameters
* updated error message of "FunctionBase" member method "getError" to reflect the newly implemented possibility of optional parameters
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* the minimum count of parameters to a external function is the maximum parameter count minus all optional parameters
* updated error message of "FunctionBase" member method "getError" to reflect the newly implemented possibility of optional parameters
</pre>
</div>
</content>
</entry>
<entry>
<title>Implemented primitive optional parameter support for external functions</title>
<updated>2014-08-16T21:30:36+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-08-16T21:30:36+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=f6ff54c492df81018cf48da039ee681508f88e46'/>
<id>f6ff54c492df81018cf48da039ee681508f88e46</id>
<content type='text'>
* renamed FunctionExternalTextFormatter into FunctionExternalCommand
** the goal is to provide a general interface to a variety of external commands
*** e.g. not just text formatters but system utilities for file management and so on
** this requires the stdin parameter to be optional as not all external commands require stdin input
* implemented "filter_derived" helper template to determine amount of optional parameters
** optional parameters are defined as "boost::optional" specializations
*** they in turn can be detected by checking if "boost::optional_detail::optional_tag" is a base class
* "callConstructDocument" member method of "FunctionBase" performs additional bounds checking of parameter vector
* "boost::optional&lt;std::string&gt;" specific member overload was added to "XObjectValue" helper class
** we will have to provide full specializations for all optional types as C++ prohibits partial member function template specialization
* renamed the external function in "PlattformGuard"
* changed README.md and test cases accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* renamed FunctionExternalTextFormatter into FunctionExternalCommand
** the goal is to provide a general interface to a variety of external commands
*** e.g. not just text formatters but system utilities for file management and so on
** this requires the stdin parameter to be optional as not all external commands require stdin input
* implemented "filter_derived" helper template to determine amount of optional parameters
** optional parameters are defined as "boost::optional" specializations
*** they in turn can be detected by checking if "boost::optional_detail::optional_tag" is a base class
* "callConstructDocument" member method of "FunctionBase" performs additional bounds checking of parameter vector
* "boost::optional&lt;std::string&gt;" specific member overload was added to "XObjectValue" helper class
** we will have to provide full specializations for all optional types as C++ prohibits partial member function template specialization
* renamed the external function in "PlattformGuard"
* changed README.md and test cases accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Changed FunctionExternalTextFormatter to execute formatter inside shell</title>
<updated>2014-08-09T16:42:47+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-08-09T16:42:47+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=7f6611cded8c1591f1aa1a4c7d70505cb21e7967'/>
<id>7f6611cded8c1591f1aa1a4c7d70505cb21e7967</id>
<content type='text'>
* otherwise one has to pass the full path to the command
** additionally it is much easier to enable passing arguments to the external formatter this way
* modified external function parameter accordingly
* updated external text formatter test case
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* otherwise one has to pass the full path to the command
** additionally it is much easier to enable passing arguments to the external formatter this way
* modified external function parameter accordingly
* updated external text formatter test case
</pre>
</div>
</content>
</entry>
<entry>
<title>Reduced FilesystemContext's determination to resolve into absolute paths</title>
<updated>2014-08-09T11:47:39+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-08-09T11:47:39+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=97b17caeeb8512e2af332d7095fca4cad160a980'/>
<id>97b17caeeb8512e2af332d7095fca4cad160a980</id>
<content type='text'>
* FilesystemContext was returning absolute paths in nearly every situation
** even when a path relative to the current working directory might be easier on the eyes
* new _soft_ base path resolution logic is implemented in a local "determineBasePath" method
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* FilesystemContext was returning absolute paths in nearly every situation
** even when a path relative to the current working directory might be easier on the eyes
* new _soft_ base path resolution logic is implemented in a local "determineBasePath" method
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed node list iteration in ResultNodeFacade</title>
<updated>2014-08-06T20:59:54+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-08-06T20:59:54+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=5a38b9e11236c71245ca0609b54157630347e393'/>
<id>5a38b9e11236c71245ca0609b54157630347e393</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Added directory creation to FunctionGenerate and FunctionWriteFile</title>
<updated>2014-07-23T17:07:28+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-23T17:07:28+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=f12fc4066e35b34d3ff504842bcbf513256c52ec'/>
<id>f12fc4066e35b34d3ff504842bcbf513256c52ec</id>
<content type='text'>
* i.e. they now create the directory tree required to contain their respective output files automatically
* this is needed so TestXSLT is able to create the target directory implicitly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* i.e. they now create the directory tree required to contain their respective output files automatically
* this is needed so TestXSLT is able to create the target directory implicitly
</pre>
</div>
</content>
</entry>
<entry>
<title>Set SystemId for node based xalan::XSLTInputSource parameters</title>
<updated>2014-07-18T21:57:17+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-18T21:57:17+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=dfa53577fcf7345e67485e71ecc20ec82f9dd521'/>
<id>dfa53577fcf7345e67485e71ecc20ec82f9dd521</id>
<content type='text'>
* entities in transformations passed by DOM to FunctionGenerate or FunctionTransform require a valid system id as a FilesystemContext base to be resolved
* added getBase member method to FilesystemContext
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* entities in transformations passed by DOM to FunctionGenerate or FunctionTransform require a valid system id as a FilesystemContext base to be resolved
* added getBase member method to FilesystemContext
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed PlatformGuard name spelling</title>
<updated>2014-07-15T20:08:40+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-15T20:08:40+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=a45c37a31eae86424d3b72ebb07604d6d1fa8bd3'/>
<id>a45c37a31eae86424d3b72ebb07604d6d1fa8bd3</id>
<content type='text'>
* its called a "platform" and not a "plattform" as in German...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* its called a "platform" and not a "plattform" as in German...
</pre>
</div>
</content>
</entry>
<entry>
<title>Updated README.md to mention TestXSLT</title>
<updated>2014-07-14T19:49:16+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-14T19:49:16+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=3435666d53353b2469fe338828313e3ca910e306'/>
<id>3435666d53353b2469fe338828313e3ca910e306</id>
<content type='text'>
* TestXSLT is a playground for testing static site generation concepts based on InputXSLT
* replaced xalan::FormatterToXML indent amount with its default value
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* TestXSLT is a playground for testing static site generation concepts based on InputXSLT
* replaced xalan::FormatterToXML indent amount with its default value
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed base path resolution of include path entities</title>
<updated>2014-07-13T19:47:16+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-13T19:47:16+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=f69c1e4e774ee6db9c9551ec7a6a32c840686f18'/>
<id>f69c1e4e774ee6db9c9551ec7a6a32c840686f18</id>
<content type='text'>
* the base path of entities resolved through square bracket include paths was not resolved correctly due to missing extraction
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* the base path of entities resolved through square bracket include paths was not resolved correctly due to missing extraction
</pre>
</div>
</content>
</entry>
<entry>
<title>Improved xalan::XalanCompiledStylesheet lifetime management</title>
<updated>2014-07-13T19:46:39+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-13T19:46:39+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=a3fe119214fa61b571326348f3ed23ec7ffd77e6'/>
<id>a3fe119214fa61b571326348f3ed23ec7ffd77e6</id>
<content type='text'>
* added custom deleter for xalan::XalanCompiledStylesheet specific std::unique_ptr specialization
* added previously missing check for successful stylesheet compilation
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* added custom deleter for xalan::XalanCompiledStylesheet specific std::unique_ptr specialization
* added previously missing check for successful stylesheet compilation
</pre>
</div>
</content>
</entry>
<entry>
<title>Implemented external "generate" function</title>
<updated>2014-07-12T14:15:42+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-12T14:15:42+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=086779c6d3d40f244b6aafd6d402fd29b921a735'/>
<id>086779c6d3d40f244b6aafd6d402fd29b921a735</id>
<content type='text'>
* this function essentially provides the same functionality as FunctionTransform with the addition of directly committing the result to the filesystem
** this is needed if one wants to generate doctype-containing transformations from inside a transformation as "write-file" is not able to infer the doctype of a given xalan::XalanNode pointer
** this is a integral limitation of (at least) XSLT 1.0 as implemented in Apache Xalan
*** a document can of course only have a single document type
*** e.g. we can not include a doctype node in the result tree of FunctionTransform
* implemented test case for FunctionGenerate
* transformation "test.xsl" is shared between the FunctionTransform and FunctionGenerate test cases
* modified README.md accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* this function essentially provides the same functionality as FunctionTransform with the addition of directly committing the result to the filesystem
** this is needed if one wants to generate doctype-containing transformations from inside a transformation as "write-file" is not able to infer the doctype of a given xalan::XalanNode pointer
** this is a integral limitation of (at least) XSLT 1.0 as implemented in Apache Xalan
*** a document can of course only have a single document type
*** e.g. we can not include a doctype node in the result tree of FunctionTransform
* implemented test case for FunctionGenerate
* transformation "test.xsl" is shared between the FunctionTransform and FunctionGenerate test cases
* modified README.md accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Marked constructDocument member methods as const</title>
<updated>2014-07-12T07:51:09+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-12T07:51:09+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=141725d681dd69f77e993c3d59d613d1ad7014f9'/>
<id>141725d681dd69f77e993c3d59d613d1ad7014f9</id>
<content type='text'>
* they don't modifiy the class state so there is no reason for them not being marked as const
** all calling methods are also const
** this enables us to remove the const_cast in FunctionBase
* modified external function implementations accordingly
* inlined handleError method in FunctionTransform as it is not needed in multiple places anymore
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* they don't modifiy the class state so there is no reason for them not being marked as const
** all calling methods are also const
** this enables us to remove the const_cast in FunctionBase
* modified external function implementations accordingly
* inlined handleError method in FunctionTransform as it is not needed in multiple places anymore
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed TransformerFacade doctype output for xalan::FormatterToXML</title>
<updated>2014-07-10T18:24:31+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-10T18:24:31+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=2192896e08572419edf99c81c3a524f07e877a10'/>
<id>2192896e08572419edf99c81c3a524f07e877a10</id>
<content type='text'>
* "xsl:output" was disregarded for xalan::FormatterToXML based output
** the setting contained within this tag have to be passed manually to the constructor...
** the xalan standard implementation includes special handling for this case
** sadly there was no alternative to adding special handling in InputXSLT as well, it is really quite ugly
* added "dispatchTransformer" template member method to TransformerFacade
** calls xalan::FormatterToXML augmentation logic if needed, compiles template
* this problem also exists for FunctionTransform output to xercesc DOM
** this patch doesn't aim to fix it in that case, it will have to be fixed separately
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* "xsl:output" was disregarded for xalan::FormatterToXML based output
** the setting contained within this tag have to be passed manually to the constructor...
** the xalan standard implementation includes special handling for this case
** sadly there was no alternative to adding special handling in InputXSLT as well, it is really quite ugly
* added "dispatchTransformer" template member method to TransformerFacade
** calls xalan::FormatterToXML augmentation logic if needed, compiles template
* this problem also exists for FunctionTransform output to xercesc DOM
** this patch doesn't aim to fix it in that case, it will have to be fixed separately
</pre>
</div>
</content>
</entry>
<entry>
<title>Added DomDocumentCache::createDocument overload enabling document naming</title>
<updated>2014-07-09T17:59:32+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-09T17:59:32+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=1fbf6a39784b57925ab19df579f487a338e22ba5'/>
<id>1fbf6a39784b57925ab19df579f487a338e22ba5</id>
<content type='text'>
* previous createDocument method used default name "content"
** this led to problems when using xalan::XalanNode as transformation input
** the parameter-less createDocument overload now creates a unnamed xercesc::DOMDocument
* changed external function implementations accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* previous createDocument method used default name "content"
** this led to problems when using xalan::XalanNode as transformation input
** the parameter-less createDocument overload now creates a unnamed xercesc::DOMDocument
* changed external function implementations accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed entity resolution bug concerning non-include paths</title>
<updated>2014-07-08T13:05:25+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-08T13:05:25+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=fcc2f8ee41d6793411a2321e6b0ac46cb5ba23ee'/>
<id>fcc2f8ee41d6793411a2321e6b0ac46cb5ba23ee</id>
<content type='text'>
* paths that can not be resolved against the include-path vector were passed on as they were instead of first removing the "file://" prefix
* this caused all normal entity paths passed to "xsl:import" and "xsl:include" statements to be unresolvable
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* paths that can not be resolved against the include-path vector were passed on as they were instead of first removing the "file://" prefix
* this caused all normal entity paths passed to "xsl:import" and "xsl:include" statements to be unresolvable
</pre>
</div>
</content>
</entry>
<entry>
<title>Added ResultNodeFacade constructor overload for root nodes</title>
<updated>2014-07-08T12:06:47+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-08T12:06:47+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=716958c6acb77f4f63cc6f99d741fe0a901a25ba'/>
<id>716958c6acb77f4f63cc6f99d741fe0a901a25ba</id>
<content type='text'>
* the common use case of ResultNodeFacade inside external function implementations is managing the result root node
** this root node can be fetched through the xercesc::DOMDocument instance
** the new alias overload automatically fetches the root node pointer and as such doesn't require a root node parameter
* changed external function implementations accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* the common use case of ResultNodeFacade inside external function implementations is managing the result root node
** this root node can be fetched through the xercesc::DOMDocument instance
** the new alias overload automatically fetches the root node pointer and as such doesn't require a root node parameter
* changed external function implementations accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Implemented custom xercesc::DOMDocument deleter</title>
<updated>2014-07-07T20:25:03+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-07T20:25:03+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=8f05c7de54336daefb214a754de35367098b6510'/>
<id>8f05c7de54336daefb214a754de35367098b6510</id>
<content type='text'>
* pointers to xercesc::DOMDocument were manually released
** this is now solved using a custom deleter for the appropriate std::unqiue_ptr template specialization
* added matching factory method to DomDocumentCache
* updated external function implementations accordingly
** "constructDocument" is now expected to return a DomDocumentCache::document_ptr instance
* updated TransformerFacade accordingly
* this change was implemented to get rid of the manual memory management required by xalan / xerces
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* pointers to xercesc::DOMDocument were manually released
** this is now solved using a custom deleter for the appropriate std::unqiue_ptr template specialization
* added matching factory method to DomDocumentCache
* updated external function implementations accordingly
** "constructDocument" is now expected to return a DomDocumentCache::document_ptr instance
* updated TransformerFacade accordingly
* this change was implemented to get rid of the manual memory management required by xalan / xerces
</pre>
</div>
</content>
</entry>
<entry>
<title>Removed duplicated "read-directory" mention in README.md</title>
<updated>2014-07-06T12:37:21+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-06T12:37:21+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=be99b28838796ff5e1dc91685d6121a55d962a88'/>
<id>be99b28838796ff5e1dc91685d6121a55d962a88</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Simplified FunctionTransform test case helper templates</title>
<updated>2014-07-06T12:33:01+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-06T12:33:01+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=e172aee6569df6a3f9abd8cd647eded1bb0612b3'/>
<id>e172aee6569df6a3f9abd8cd647eded1bb0612b3</id>
<content type='text'>
* as FunctionTransform returns the result as a DOM tree there is no reason for including the separately tested FunctionWriteFile in this test case
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* as FunctionTransform returns the result as a DOM tree there is no reason for including the separately tested FunctionWriteFile in this test case
</pre>
</div>
</content>
</entry>
<entry>
<title>Revamped implementation to support FunctionTransform XalanNode input</title>
<updated>2014-07-05T19:55:48+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-05T19:55:48+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=a02dce3c8e6086acbfe9c57c3ee4bb386bfbebc2'/>
<id>a02dce3c8e6086acbfe9c57c3ee4bb386bfbebc2</id>
<content type='text'>
* FunctionTransform now accepts xalan::XalanNode base xalan::XSLTInputSource instances as input parameter
** such xalan::XSLTInputSource instances were already supported for the stylesheet parameter but not for the input parameter
** e.g. it is now possible to generate a DOM inside a transformation, pass the DOM into a embedded transformation as input, modifiy the output of that transformation, pass this modified DOM into another transformation and so on... you get the point
* this required a revamp of TransformationFacade
** it is now a transformation independent wrapper for xalan::XalanTransformer
*** as such is was renamed to TransformerFacade
** removed error catching template factory method "try_create" as it is not needed anymore
** "std::basic_ostream&lt;char&gt;&amp;" taking "generate" member method overloads were removed
** the set of "generate" member overloads was reduced to two methods accepting xalan::XSLTInputSource and xalan::FormatterListener as parameters
* the core problem first documented in 299d0f6 was solved by transforming the input parameter into a xerces DOM and wrapping this DOM inside a xalan::XercesDOMWrapperParsedSource instance
* serialization of the transformation result for file / std::cout output is now performed directly by the ixslt frontend
* removed 'stylesheet parameter' parameter from FunctionTransform
** the functionality provided by this is easily replicated using the now possible DOM input parameter
** this was done to simplify the interface and reduce unnecessary feature duplication
* updated FunctionTransform test case accordingly
* added "generate" template function to ixslt frontend
** wraps TransformerFacade and manages ist input arguments
** handles serialization to stream
* this commit marks a important milestone towards the goals defined in 741a70f
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* FunctionTransform now accepts xalan::XalanNode base xalan::XSLTInputSource instances as input parameter
** such xalan::XSLTInputSource instances were already supported for the stylesheet parameter but not for the input parameter
** e.g. it is now possible to generate a DOM inside a transformation, pass the DOM into a embedded transformation as input, modifiy the output of that transformation, pass this modified DOM into another transformation and so on... you get the point
* this required a revamp of TransformationFacade
** it is now a transformation independent wrapper for xalan::XalanTransformer
*** as such is was renamed to TransformerFacade
** removed error catching template factory method "try_create" as it is not needed anymore
** "std::basic_ostream&lt;char&gt;&amp;" taking "generate" member method overloads were removed
** the set of "generate" member overloads was reduced to two methods accepting xalan::XSLTInputSource and xalan::FormatterListener as parameters
* the core problem first documented in 299d0f6 was solved by transforming the input parameter into a xerces DOM and wrapping this DOM inside a xalan::XercesDOMWrapperParsedSource instance
* serialization of the transformation result for file / std::cout output is now performed directly by the ixslt frontend
* removed 'stylesheet parameter' parameter from FunctionTransform
** the functionality provided by this is easily replicated using the now possible DOM input parameter
** this was done to simplify the interface and reduce unnecessary feature duplication
* updated FunctionTransform test case accordingly
* added "generate" template function to ixslt frontend
** wraps TransformerFacade and manages ist input arguments
** handles serialization to stream
* this commit marks a important milestone towards the goals defined in 741a70f
</pre>
</div>
</content>
</entry>
<entry>
<title>Changed FunctionTransform result type to node-set</title>
<updated>2014-07-04T20:41:17+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-04T20:41:17+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=f05e742b88e3ebf7401c252332022f1a2f7eb8b0'/>
<id>f05e742b88e3ebf7401c252332022f1a2f7eb8b0</id>
<content type='text'>
* using xalan::FormatterToXercesDOM internally
** this required changes to the TransformationFacade::generate member method overloads
* TransformationFacade::generate now accepts references to xalan::FormatterListener instances
** "generate(std::basic_ostream&lt;char&gt;&amp;..." instantiates a xalan::FormatterToXML and passes it to the actual generate member method
* changed ResultNodeFacade's "getNode" method into a "getResultElement" method
** xalan::FormatterToXercesDOM requires a xercesc::DOMElement instance instead of the previously available xercesc::DOMNode instance
** changed FunctionReadDirectory accordingly
* adapted FunctionTransform test case accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* using xalan::FormatterToXercesDOM internally
** this required changes to the TransformationFacade::generate member method overloads
* TransformationFacade::generate now accepts references to xalan::FormatterListener instances
** "generate(std::basic_ostream&lt;char&gt;&amp;..." instantiates a xalan::FormatterToXML and passes it to the actual generate member method
* changed ResultNodeFacade's "getNode" method into a "getResultElement" method
** xalan::FormatterToXercesDOM requires a xercesc::DOMElement instance instead of the previously available xercesc::DOMNode instance
** changed FunctionReadDirectory accordingly
* adapted FunctionTransform test case accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Removed unnecessary template member methods from TranformationFacade</title>
<updated>2014-07-01T18:54:02+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-01T18:54:02+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=784ac42a0f05608e3d9c5e15246dbf76ce9e3d51'/>
<id>784ac42a0f05608e3d9c5e15246dbf76ce9e3d51</id>
<content type='text'>
* neither the constructor nor the generate member methods need to be templatized
** only supported "output" argument is now a reference to a "std::basic_ostream&lt;char&gt;" instance
** the caller is responsible for e.g. writing the output to disk
* this was done to simplify the basic interface of InputXSLT
* removed "default_params" testcase along with default parameter generation
** this feature is neither used nor required
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* neither the constructor nor the generate member methods need to be templatized
** only supported "output" argument is now a reference to a "std::basic_ostream&lt;char&gt;" instance
** the caller is responsible for e.g. writing the output to disk
* this was done to simplify the basic interface of InputXSLT
* removed "default_params" testcase along with default parameter generation
** this feature is neither used nor required
</pre>
</div>
</content>
</entry>
</feed>
