#include "transform.h" #include #include #include #include "transformation_facade.h" #include "support/xerces_string_guard.h" namespace InputXSLT { xercesc::DOMDocument* FunctionTransform::constructDocument( const InputXSLT::FilesystemContext& fsContext, const FunctionBase::argument_tuple& arguments ) { const boost::filesystem::path transformationPath( fsContext.resolve(std::get<0>(arguments)) ); const boost::filesystem::path targetPath( fsContext.resolve(std::get<1>(arguments)) ); xercesc::DOMDocument* const domDocument( xercesc::DOMImplementation::getImplementation()->createDocument( nullptr, *XercesStringGuard("content"), nullptr ) ); xercesc::DOMNode* const rootNode( domDocument->getDocumentElement() ); InputXSLT::TransformationFacade transformation( transformationPath.string() ); const int result = transformation.generate( targetPath.string(), std::get<2>(arguments) ); if ( result == 0 ) { xercesc::DOMElement* const resultNode( domDocument->createElement(*XercesStringGuard("result")) ); resultNode->setAttribute( *XercesStringGuard("name"), *XercesStringGuard(targetPath.string()) ); rootNode->appendChild(resultNode); } else { xercesc::DOMElement* const resultNode( domDocument->createElement(*XercesStringGuard("error")) ); rootNode->appendChild(resultNode); } return domDocument; } }