diff options
author | Adrian Kummerländer | 2014-05-29 13:26:37 +0200 |
---|---|---|
committer | Adrian Kummerländer | 2014-05-29 13:26:37 +0200 |
commit | 3bc793d95293d40dbab62c593ce4ceaa86fae25b (patch) | |
tree | 07a0f99d72a074a75955a593318cc8bcd394f4c2 /src/function | |
parent | 52b60c1a8c23f11ab18fad06e0957490c7436e0a (diff) | |
download | InputXSLT-3bc793d95293d40dbab62c593ce4ceaa86fae25b.tar InputXSLT-3bc793d95293d40dbab62c593ce4ceaa86fae25b.tar.gz InputXSLT-3bc793d95293d40dbab62c593ce4ceaa86fae25b.tar.bz2 InputXSLT-3bc793d95293d40dbab62c593ce4ceaa86fae25b.tar.lz InputXSLT-3bc793d95293d40dbab62c593ce4ceaa86fae25b.tar.xz InputXSLT-3bc793d95293d40dbab62c593ce4ceaa86fae25b.tar.zst InputXSLT-3bc793d95293d40dbab62c593ce4ceaa86fae25b.zip |
Improved TransformationFacade error handling
* ErrorHandler class created in 5859cb6 now caches all errors instead of pushing them to std::cerr
** cached errors are retrieved by TransformationFacade's "generate" member method
* test frontend pushes all errors to std::cerr
* FunctionTransform returns errors to the calling template as XML
** FunctionTransform test case demonstrates how one may test for successful transformation
* "generate" member method returns std::string vector wrapped in a std::unique_ptr
** this is used as a kind of optional pointer, as the std::unique_ptr instance only wraps a vector if errors where actually generated
Diffstat (limited to 'src/function')
-rw-r--r-- | src/function/transform.cc | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/function/transform.cc b/src/function/transform.cc index fd28b34..7e8a844 100644 --- a/src/function/transform.cc +++ b/src/function/transform.cc @@ -38,17 +38,22 @@ xercesc::DOMDocument* FunctionTransform::constructDocument( domDocument->getDocumentElement() ); + ResultNodeFacade result(domDocument, rootNode, "result"); + result.setAttribute("name", targetPath); + InputXSLT::TransformationFacade transformation( transformationPath, this->include_resolver_ ); - if ( transformation.generate(targetPath, parameterObject) == 0 ) { - ResultNodeFacade result(domDocument, rootNode, "result"); + InputXSLT::TransformationFacade::return_type errors( + transformation.generate(targetPath, parameterObject) + ); - result.setAttribute("name", targetPath); - } else { - ResultNodeFacade result(domDocument, rootNode, "error"); + if ( errors ) { + for ( auto&& error : *errors ) { + result.setValueNode("error", error); + } } return domDocument; |