From 299d0f6fa3fbd1bfd8d1d6d452e9d055973d0e0e Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Sat, 28 Jun 2014 18:09:48 +0200 Subject: Added input parameter to FunctionTransform * the external "transform" function now expects a input document as its first parameter ** this input parameter is resolved and passed as input to the transformation ** changed and expanded test case accordingly * because of xalan internal problem this currently only supports input DOMs loaded directly from the fs ** passing result trees or node sets analog to how the transformation may be passed into the function leads to parsing and assert failures ** parsing node-based input DOMs using xalanc::XalanTransformer::parseSource produces errors concerning base entity resolution ** if the error capacitor instance is temporarily disabled it works correctly as long as one doesn't try to access the input document *** this causes a assert failure in the XPath implementation (seems to be related to XALANC-540) --- src/function/transform.cc | 2 ++ src/function/transform.h | 2 ++ src/transformation_facade.h | 2 -- 3 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/function/transform.cc b/src/function/transform.cc index 9cf806f..bc71125 100644 --- a/src/function/transform.cc +++ b/src/function/transform.cc @@ -31,6 +31,7 @@ inline std::function handleErrors( namespace InputXSLT { xercesc::DOMDocument* FunctionTransform::constructDocument( + xalan::XSLTInputSource inputSource, xalan::XSLTInputSource transformationSource, xalan::XObjectPtr parameterObject ) { @@ -50,6 +51,7 @@ xercesc::DOMDocument* FunctionTransform::constructDocument( if ( auto transformation = TransformationFacade::try_create( handleErrors(result), + inputSource, transformationSource, this->include_resolver_ ) ) { diff --git a/src/function/transform.h b/src/function/transform.h index ee88529..cda5502 100644 --- a/src/function/transform.h +++ b/src/function/transform.h @@ -12,6 +12,7 @@ namespace InputXSLT { class FunctionTransform : public FunctionBase< FunctionTransform, xalan::XSLTInputSource, + xalan::XSLTInputSource, xalan::XObjectPtr > { public: @@ -21,6 +22,7 @@ class FunctionTransform : public FunctionBase< friend FunctionBase; xercesc::DOMDocument* constructDocument( + xalan::XSLTInputSource, xalan::XSLTInputSource, xalan::XObjectPtr ); diff --git a/src/transformation_facade.h b/src/transformation_facade.h index 00a5785..eb134cd 100644 --- a/src/transformation_facade.h +++ b/src/transformation_facade.h @@ -20,8 +20,6 @@ class TransformationFacade { public: typedef std::unique_ptr ptr; - class input; - template static ptr try_create( const std::function&, -- cgit v1.2.3