From 741a70f5fecc38033832728f4ecc62a6abe328b2 Mon Sep 17 00:00:00 2001
From: Adrian Kummerlaender
Date: Mon, 16 Jun 2014 23:01:23 +0200
Subject: Prepared TransformationFacade and FunctionTransform for parameter
 change * FunctionTransform was adapted to support passing the transformation
 as either a string path or directly as a node-set / result-tree ** this in
 turn required changes to the TransformationFacade ** the implementation of a
 xalan::XSLTInputSource specialization for the XObjectValue::get template
 method was also required * changed ixslt executable to match
 TransformationFacade constructor changes * these changes were implemented in
 preparation for a restructuring of how the separate external functions
 provided by InputXSLT operate and work together ** the approach up until now
 was to provide non-combinable external functions for distinct task such as
 "read a file" and "transform that transformation using these parameters into
 that file" ** if you think about the areas of operations of these functions
 are overlapping quite a bit *** e.g. FunctionTransform reads files,
 transforms DOM structures and writes files instead of only transforming
 things ** the new approach will be to limit the feature set of each function
 in the attempt of making the clearer and increasing their combinability ***
 e.g. FunctionTransform won't read or write files but expect both the
 input-DOM and the transformation-DOM as node-sets or result trees and return
 the transformed document as a node-set to be written using FunctionWriteFile
 (to be implemented)

---
 src/function/read_file.cc | 3 ++-
 src/function/transform.cc | 4 ++--
 src/function/transform.h  | 6 ++++--
 3 files changed, 8 insertions(+), 5 deletions(-)

(limited to 'src/function')

diff --git a/src/function/read_file.cc b/src/function/read_file.cc
index 7603ad1..1ea76c7 100644
--- a/src/function/read_file.cc
+++ b/src/function/read_file.cc
@@ -14,7 +14,8 @@
 namespace {
 
 inline bool isXmlFile(const boost::filesystem::path& filePath) {
-	return filePath.extension() == ".xml";
+	return filePath.extension() == ".xml" ||
+	       filePath.extension() == ".xsl";
 }
 
 inline xercesc::DOMNode* readXmlFile(
diff --git a/src/function/transform.cc b/src/function/transform.cc
index 9f0e98a..62b89ba 100644
--- a/src/function/transform.cc
+++ b/src/function/transform.cc
@@ -30,7 +30,7 @@ namespace InputXSLT {
 
 xercesc::DOMDocument* FunctionTransform::constructDocument(
 	const InputXSLT::FilesystemContext& fsContext,
-	std::string                         transformationPath,
+	xalan::XSLTInputSource              transformationSource,
 	std::string                         targetPath,
 	xalan::XObjectPtr                   parameterObject
 ) {
@@ -55,7 +55,7 @@ xercesc::DOMDocument* FunctionTransform::constructDocument(
 
 	if ( auto transformation = TransformationFacade::try_create(
 		handleErrors(result),
-		fsContext.resolve(transformationPath).string(),
+		transformationSource,
 		this->include_resolver_
 	) ) {
 		try {
diff --git a/src/function/transform.h b/src/function/transform.h
index b841750..081fe90 100644
--- a/src/function/transform.h
+++ b/src/function/transform.h
@@ -1,13 +1,15 @@
 #ifndef INPUTXSLT_SRC_FUNCTION_TRANSFORM_H_
 #define INPUTXSLT_SRC_FUNCTION_TRANSFORM_H_
 
+#include <xalanc/XSLT/XSLTInputSource.hpp>
+
 #include "base.h"
 
 namespace InputXSLT {
 
 class FunctionTransform : public FunctionBase<
 	FunctionTransform,
-	std::string,
+	xalan::XSLTInputSource,
 	std::string,
 	xalan::XObjectPtr
 > {
@@ -19,7 +21,7 @@ class FunctionTransform : public FunctionBase<
 
 		xercesc::DOMDocument* constructDocument(
 			const FilesystemContext&,
-			std::string,
+			xalan::XSLTInputSource,
 			std::string,
 			xalan::XObjectPtr
 		);
-- 
cgit v1.2.3