diff options
author | Adrian Kummerländer | 2014-04-20 13:09:32 +0200 |
---|---|---|
committer | Adrian Kummerländer | 2014-04-20 13:09:32 +0200 |
commit | 29a9fb20b4c8414f2590886e43ae86794a53db89 (patch) | |
tree | 4d426d45293a019caee8ee879186111c90b426d3 /src/transformer_guard.cc | |
parent | 3383e24e396431eed7d4ab9f69ff8ffaf12d4925 (diff) | |
download | InputXSLT-29a9fb20b4c8414f2590886e43ae86794a53db89.tar InputXSLT-29a9fb20b4c8414f2590886e43ae86794a53db89.tar.gz InputXSLT-29a9fb20b4c8414f2590886e43ae86794a53db89.tar.bz2 InputXSLT-29a9fb20b4c8414f2590886e43ae86794a53db89.tar.lz InputXSLT-29a9fb20b4c8414f2590886e43ae86794a53db89.tar.xz InputXSLT-29a9fb20b4c8414f2590886e43ae86794a53db89.tar.zst InputXSLT-29a9fb20b4c8414f2590886e43ae86794a53db89.zip |
Implemented support for modifying external function base path
* 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
Diffstat (limited to 'src/transformer_guard.cc')
-rw-r--r-- | src/transformer_guard.cc | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/src/transformer_guard.cc b/src/transformer_guard.cc deleted file mode 100644 index 73bcea2..0000000 --- a/src/transformer_guard.cc +++ /dev/null @@ -1,67 +0,0 @@ -#include "transformer_guard.h" - -#include <xalanc/Include/PlatformDefinitions.hpp> -#include <xercesc/util/PlatformUtils.hpp> - -#include <xalanc/XSLT/XSLTInputSource.hpp> -#include <xalanc/XalanTransformer/XalanTransformer.hpp> -#include <xalanc/XalanTransformer/XercesDOMWrapperParsedSource.hpp> -#include <xalanc/XercesParserLiaison/XercesDOMSupport.hpp> - -#include <xercesc/dom/DOMDocument.hpp> -#include <xercesc/dom/DOMImplementation.hpp> - -#include "function/read_file.h" -#include "function/read_xml_file.h" - -namespace InputXSLT { - -TransformerGuard::TransformerGuard(): - plattform_(), - parser_(), - transformer_() { - const xalan::XalanDOMString customNamespace( - "http://ExternalFunction.xalan-c++.xml.apache.org" - ); - - this->transformer_.installExternalFunction( - customNamespace, - xalan::XalanDOMString("read-file"), - InputXSLT::FunctionReadFile() - ); - - this->transformer_.installExternalFunction( - customNamespace, - xalan::XalanDOMString("read-xml-file"), - InputXSLT::FunctionReadXmlFile() - ); - -} - -int TransformerGuard::execute( - const std::string& transformation, - const std::string& target -) { - xercesc::DOMDocument* inputDom( - xercesc::DOMImplementation::getImplementation()->createDocument() - ); - xalan::XercesDOMSupport domSupport(this->parser_); - - xalan::XercesDOMWrapperParsedSource parsedInput( - inputDom, - this->parser_, - domSupport, - xalan::XalanDOMString("") - ); - - xalan::XSLTInputSource transform(transformation.data()); - xalan::XSLTResultTarget output(target.data()); - - return this->transformer_.transform( - parsedInput, - transform, - output - ); -} - -} |