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 - test/common/test.xml | 12 +++--- test/read_xml_file/transformation.xsl | 2 +- test/transform/reference.xml | 6 +++ test/transform/test.xsl | 7 +++- test/transform/transformation.xsl | 74 +++++++++++++++++------------------ 8 files changed, 59 insertions(+), 48 deletions(-) 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&, diff --git a/test/common/test.xml b/test/common/test.xml index 046a6ef..f2739af 100644 --- a/test/common/test.xml +++ b/test/common/test.xml @@ -1,7 +1,7 @@ - - Hello 1 - Hello 2 - Hello 3 - Hello 4 - + + Hello 1 + Hello 2 + Hello 3 + Hello 4 + diff --git a/test/read_xml_file/transformation.xsl b/test/read_xml_file/transformation.xsl index cd06c46..083cb12 100644 --- a/test/read_xml_file/transformation.xsl +++ b/test/read_xml_file/transformation.xsl @@ -14,7 +14,7 @@ - + diff --git a/test/transform/reference.xml b/test/transform/reference.xml index bef43e4..e537bbc 100644 --- a/test/transform/reference.xml +++ b/test/transform/reference.xml @@ -1,4 +1,10 @@ + +Hello 1 +Hello 2 +Hello 3 +Hello 4 + 42 diff --git a/test/transform/test.xsl b/test/transform/test.xsl index 7d4cac0..7469f92 100644 --- a/test/transform/test.xsl +++ b/test/transform/test.xsl @@ -16,11 +16,14 @@ - + + + + - + diff --git a/test/transform/transformation.xsl b/test/transform/transformation.xsl index ba17981..3582527 100644 --- a/test/transform/transformation.xsl +++ b/test/transform/transformation.xsl @@ -10,63 +10,59 @@ + + + + + + + + - - - - - - - - - - - - - - + + - + - - + + + - - - + + + + + + - - - - - - + + + + + [test.xml] test.xsl test_actual.xml @@ -75,8 +71,12 @@ + + + + - + -- cgit v1.2.3