aboutsummaryrefslogtreecommitdiff
path: root/src/support
diff options
context:
space:
mode:
Diffstat (limited to 'src/support')
-rw-r--r--src/support/filesystem_context.cc10
-rw-r--r--src/support/filesystem_context.h3
2 files changed, 10 insertions, 3 deletions
diff --git a/src/support/filesystem_context.cc b/src/support/filesystem_context.cc
index d3caf88..32646be 100644
--- a/src/support/filesystem_context.cc
+++ b/src/support/filesystem_context.cc
@@ -1,5 +1,7 @@
#include "filesystem_context.h"
+#include "support/xerces_string_guard.h"
+
namespace {
inline std::string xalanToString(const xalan::XalanDOMString& text) {
@@ -16,8 +18,12 @@ inline std::string xalanToString(const xalan::XalanDOMString& text) {
namespace InputXSLT {
-FilesystemContext::FilesystemContext(const std::string& path):
- path_(canonical(boost::filesystem::path(path))) { }
+FilesystemContext::FilesystemContext(const xalan::Locator* locator):
+ path_(boost::filesystem::canonical(
+ boost::filesystem::path(
+ *XercesStringGuard<char>(locator->getSystemId()) + 7
+ ).parent_path().string()
+ )) { }
boost::filesystem::path FilesystemContext::resolve(
const std::string& path) const {
diff --git a/src/support/filesystem_context.h b/src/support/filesystem_context.h
index cb3edd4..f743c89 100644
--- a/src/support/filesystem_context.h
+++ b/src/support/filesystem_context.h
@@ -2,6 +2,7 @@
#define INPUTXSLT_SRC_SUPPORT_FILESYSTEM_CONTEXT_H_
#include <xalanc/XalanDOM/XalanDOMString.hpp>
+#include <xalanc/XPath/Function.hpp>
#include "boost/filesystem.hpp"
@@ -14,7 +15,7 @@ namespace InputXSLT {
class FilesystemContext {
public:
- explicit FilesystemContext(const std::string&);
+ explicit FilesystemContext(const xalan::Locator*);
boost::filesystem::path resolve(const std::string&) const;
boost::filesystem::path resolve(const xalan::XalanDOMString&) const;