From e5ed418907f09bf8905463f42a44593d51159bc9 Mon Sep 17 00:00:00 2001 From: Adrian Kummerländer Date: Fri, 2 May 2014 22:06:37 +0200 Subject: Changed external functions to enable global installation * up until now all external functions were locally installed to a specific XalanTransformer instance contained within a TransformationGuard instance ** this had to change as I planned to add a "execute-transformation" function based on TransformationGuard which would have led to recursive self-instantiation ** global external functions have to be thread-safe * as global external function can not be provided with a reference to a transformation-specific FilesystemFacade instance, the working path is now determined using xalan::Locator ** currently using pointer arithmetics on XMLCh* to remove the "file://" prefix of the URI returned by locator->getSystemId(), may be unsafe * added compilation unit for PlattformGuard as it now contains function installation in addition to plattform lifetime management --- src/transformation_facade.cc | 27 --------------------------- 1 file changed, 27 deletions(-) (limited to 'src/transformation_facade.cc') diff --git a/src/transformation_facade.cc b/src/transformation_facade.cc index 3fee24f..91d761d 100644 --- a/src/transformation_facade.cc +++ b/src/transformation_facade.cc @@ -6,38 +6,11 @@ #include #include -#include "function/read_file.h" -#include "function/read_xml_file.h" -#include "function/read_directory.h" - namespace InputXSLT { TransformationFacade::TransformationFacade(const std::string& transformation): - fs_context_(boost::filesystem::path(transformation).parent_path().string()), transformation_{}, transformer_() { - const xalan::XalanDOMString customNamespace( - "function.inputxslt.application" - ); - - this->transformer_.installExternalFunction( - customNamespace, - xalan::XalanDOMString("read-file"), - InputXSLT::FunctionReadFile(this->fs_context_) - ); - - this->transformer_.installExternalFunction( - customNamespace, - xalan::XalanDOMString("read-xml-file"), - InputXSLT::FunctionReadXmlFile(this->fs_context_) - ); - - this->transformer_.installExternalFunction( - customNamespace, - xalan::XalanDOMString("read-directory"), - InputXSLT::FunctionReadDirectory(this->fs_context_) - ); - this->transformer_.compileStylesheet( xalan::XSLTInputSource(transformation.data()), this->transformation_ -- cgit v1.2.3