diff options
author | Adrian Kummerlaender | 2014-06-16 23:01:23 +0200 |
---|---|---|
committer | Adrian Kummerlaender | 2014-06-16 23:01:23 +0200 |
commit | 741a70f5fecc38033832728f4ecc62a6abe328b2 (patch) | |
tree | 5cf421ece0eb745a618f654ecbdaeb21587c2875 /src/function | |
parent | 32c65970263c65022f5278b568c07b63c3d5d64b (diff) | |
download | InputXSLT-741a70f5fecc38033832728f4ecc62a6abe328b2.tar InputXSLT-741a70f5fecc38033832728f4ecc62a6abe328b2.tar.gz InputXSLT-741a70f5fecc38033832728f4ecc62a6abe328b2.tar.bz2 InputXSLT-741a70f5fecc38033832728f4ecc62a6abe328b2.tar.lz InputXSLT-741a70f5fecc38033832728f4ecc62a6abe328b2.tar.xz InputXSLT-741a70f5fecc38033832728f4ecc62a6abe328b2.tar.zst InputXSLT-741a70f5fecc38033832728f4ecc62a6abe328b2.zip |
Prepared TransformationFacade and FunctionTransform for parameter change
* FunctionTransform was adapted to support passing the transformation as either a string path or directly as a node-set / result-tree
** this in turn required changes to the TransformationFacade
** the implementation of a xalan::XSLTInputSource specialization for the XObjectValue::get template method was also required
* changed ixslt executable to match TransformationFacade constructor changes
* these changes were implemented in preparation for a restructuring of how the separate external functions provided by InputXSLT operate and work together
** the approach up until now was to provide non-combinable external functions for distinct task such as "read a file" and "transform that transformation using these parameters into that file"
** if you think about the areas of operations of these functions are overlapping quite a bit
*** e.g. FunctionTransform reads files, transforms DOM structures and writes files instead of only transforming things
** the new approach will be to limit the feature set of each function in the attempt of making the clearer and increasing their combinability
*** e.g. FunctionTransform won't read or write files but expect both the input-DOM and the transformation-DOM as node-sets or result trees and return the transformed document as a node-set to be written using FunctionWriteFile (to be implemented)
Diffstat (limited to 'src/function')
-rw-r--r-- | src/function/read_file.cc | 3 | ||||
-rw-r--r-- | src/function/transform.cc | 4 | ||||
-rw-r--r-- | src/function/transform.h | 6 |
3 files changed, 8 insertions, 5 deletions
diff --git a/src/function/read_file.cc b/src/function/read_file.cc index 7603ad1..1ea76c7 100644 --- a/src/function/read_file.cc +++ b/src/function/read_file.cc @@ -14,7 +14,8 @@ namespace { inline bool isXmlFile(const boost::filesystem::path& filePath) { - return filePath.extension() == ".xml"; + return filePath.extension() == ".xml" || + filePath.extension() == ".xsl"; } inline xercesc::DOMNode* readXmlFile( diff --git a/src/function/transform.cc b/src/function/transform.cc index 9f0e98a..62b89ba 100644 --- a/src/function/transform.cc +++ b/src/function/transform.cc @@ -30,7 +30,7 @@ namespace InputXSLT { xercesc::DOMDocument* FunctionTransform::constructDocument( const InputXSLT::FilesystemContext& fsContext, - std::string transformationPath, + xalan::XSLTInputSource transformationSource, std::string targetPath, xalan::XObjectPtr parameterObject ) { @@ -55,7 +55,7 @@ xercesc::DOMDocument* FunctionTransform::constructDocument( if ( auto transformation = TransformationFacade::try_create( handleErrors(result), - fsContext.resolve(transformationPath).string(), + transformationSource, this->include_resolver_ ) ) { try { diff --git a/src/function/transform.h b/src/function/transform.h index b841750..081fe90 100644 --- a/src/function/transform.h +++ b/src/function/transform.h @@ -1,13 +1,15 @@ #ifndef INPUTXSLT_SRC_FUNCTION_TRANSFORM_H_ #define INPUTXSLT_SRC_FUNCTION_TRANSFORM_H_ +#include <xalanc/XSLT/XSLTInputSource.hpp> + #include "base.h" namespace InputXSLT { class FunctionTransform : public FunctionBase< FunctionTransform, - std::string, + xalan::XSLTInputSource, std::string, xalan::XObjectPtr > { @@ -19,7 +21,7 @@ class FunctionTransform : public FunctionBase< xercesc::DOMDocument* constructDocument( const FilesystemContext&, - std::string, + xalan::XSLTInputSource, std::string, xalan::XObjectPtr ); |