diff options
author | Adrian Kummerlaender | 2014-06-25 20:23:35 +0200 |
---|---|---|
committer | Adrian Kummerlaender | 2014-06-25 20:23:35 +0200 |
commit | 7b872121000d4db4026d0c90fcb95a10f1e43694 (patch) | |
tree | d1cea19c4556b3574978f51bdf2bed2d36fbb73f /src/support/type | |
parent | 0d670478b51c55e44f57995fe3ca8a4585723a6c (diff) | |
download | InputXSLT-7b872121000d4db4026d0c90fcb95a10f1e43694.tar InputXSLT-7b872121000d4db4026d0c90fcb95a10f1e43694.tar.gz InputXSLT-7b872121000d4db4026d0c90fcb95a10f1e43694.tar.bz2 InputXSLT-7b872121000d4db4026d0c90fcb95a10f1e43694.tar.lz InputXSLT-7b872121000d4db4026d0c90fcb95a10f1e43694.tar.xz InputXSLT-7b872121000d4db4026d0c90fcb95a10f1e43694.tar.zst InputXSLT-7b872121000d4db4026d0c90fcb95a10f1e43694.zip |
Added support for resolving non-existing paths
* previous logic for resolving boost::filesystem::path parameters in the XObjectValue class actively tried to resolve existing files
** this contradicts the planned introduction of e.g. a external "write-file" function
* callers of external functions with path arguments now have to enclose them in square brackets if include path resolution is required
** analog to the usage of the "xsl:import" tag
* moved "getPathFromSystemId" from compilation local method into static method of IncludeEntityResolver
* changed test cases accordingly
Diffstat (limited to 'src/support/type')
-rw-r--r-- | src/support/type/xobject_value.cc | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/src/support/type/xobject_value.cc b/src/support/type/xobject_value.cc index 0236597..46ce53c 100644 --- a/src/support/type/xobject_value.cc +++ b/src/support/type/xobject_value.cc @@ -28,23 +28,14 @@ std::string XObjectValue::get<std::string>( template <> boost::filesystem::path XObjectValue::get<boost::filesystem::path>( const xalan::XObjectPtr& ptr) const { - const boost::filesystem::path rawPath( - toString(ptr->str()) + const std::string rawPath( + this->get<std::string>(ptr) ); - const boost::filesystem::path filePath( - this->filesystem_context_.resolve(rawPath) - ); - - if ( !(boost::filesystem::exists(filePath) && - boost::filesystem::is_regular_file(filePath)) ) { - if ( auto resolvedPath = this->include_resolver_->resolve(rawPath) ) { - return *resolvedPath; - } else { - return filePath; - } + if ( auto resolvedPath = this->include_resolver_->resolve(rawPath) ) { + return *resolvedPath; } else { - return filePath; + return this->filesystem_context_.resolve(rawPath); } } |