aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Kummerlaender2014-07-18 23:57:17 +0200
committerAdrian Kummerlaender2014-07-18 23:57:17 +0200
commitdfa53577fcf7345e67485e71ecc20ec82f9dd521 (patch)
tree8f26fda2d9f64ee029d635dcab2597d3ac384af7
parenta45c37a31eae86424d3b72ebb07604d6d1fa8bd3 (diff)
downloadInputXSLT-dfa53577fcf7345e67485e71ecc20ec82f9dd521.tar
InputXSLT-dfa53577fcf7345e67485e71ecc20ec82f9dd521.tar.gz
InputXSLT-dfa53577fcf7345e67485e71ecc20ec82f9dd521.tar.bz2
InputXSLT-dfa53577fcf7345e67485e71ecc20ec82f9dd521.tar.lz
InputXSLT-dfa53577fcf7345e67485e71ecc20ec82f9dd521.tar.xz
InputXSLT-dfa53577fcf7345e67485e71ecc20ec82f9dd521.tar.zst
InputXSLT-dfa53577fcf7345e67485e71ecc20ec82f9dd521.zip
Set SystemId for node based xalan::XSLTInputSource parameters
* entities in transformations passed by DOM to FunctionGenerate or FunctionTransform require a valid system id as a FilesystemContext base to be resolved * added getBase member method to FilesystemContext
-rw-r--r--src/support/filesystem_context.cc4
-rw-r--r--src/support/filesystem_context.h2
-rw-r--r--src/support/type/xobject_value.cc11
3 files changed, 16 insertions, 1 deletions
diff --git a/src/support/filesystem_context.cc b/src/support/filesystem_context.cc
index 21548a5..183af13 100644
--- a/src/support/filesystem_context.cc
+++ b/src/support/filesystem_context.cc
@@ -57,4 +57,8 @@ boost::filesystem::path FilesystemContext::resolve(
}
}
+boost::filesystem::path FilesystemContext::getBase() const {
+ return this->path_;
+}
+
}
diff --git a/src/support/filesystem_context.h b/src/support/filesystem_context.h
index 2088c6b..f3875a3 100644
--- a/src/support/filesystem_context.h
+++ b/src/support/filesystem_context.h
@@ -26,6 +26,8 @@ class FilesystemContext {
boost::filesystem::path resolve(const xalan::XalanDOMString&) const;
boost::filesystem::path resolve(const boost::filesystem::path&) const;
+ boost::filesystem::path getBase() const;
+
private:
const boost::filesystem::path path_;
diff --git a/src/support/type/xobject_value.cc b/src/support/type/xobject_value.cc
index a788e8e..9bb6648 100644
--- a/src/support/type/xobject_value.cc
+++ b/src/support/type/xobject_value.cc
@@ -9,6 +9,7 @@
#include <string>
#include "support/xalan_string.h"
+#include "support/xerces_string_guard.h"
namespace InputXSLT {
@@ -73,7 +74,15 @@ xalan::XSLTInputSource XObjectValue::get<xalan::XSLTInputSource>(
this->get<boost::filesystem::path>(ptr).string().data()
);
} else {
- return xalan::XSLTInputSource(node);
+ xalan::XSLTInputSource source(node);
+
+ source.setSystemId(
+ *XercesStringGuard<XMLCh>(
+ this->filesystem_context_.getBase().string()
+ )
+ );
+
+ return source;
}
}