Re: encode-for-uri() and filenames?

On 22.11.2020 18:12, Martin Honnen wrote:
> On 22.11.2020 17:34, David Birnbaum wrote:
>> Dear XProc Dev,
>> I've been struggling with filenames that are not compatible with
>> URIs, and attempting to work around the limitation by using
>> encode-for-uri() when I save the file. I described the general
>> problem on the eXist-open mailing list, so I won't repeat it here,
>> but my issue has an XProc aspect, and may even be an XProc—rather
>> than broader filename—issue, and I would be grateful if someone on
>> this list to help clarify that aspect of it for me.
>> Here is a test XProc file, which I run under MorganaXProc-IIIse
>>     <?xml version="1.0" encoding="UTF-8"?>
>>     <p:declare-step xmlns:p="
>>     <>"
>>     xmlns:c="
>>     <>"
>>       version="3.0">
>>       <p:input port="source">
>>         <p:inline>
>>           <doc>Hello world!</doc>
>>         </p:inline>
>>       </p:input>
>>       <p:output port="result"/>
>>       <p:variable name="output-filename"
>>     select="encode-for-uri('test-1a%7%.xml')"/>
>>       <p:identity message="{$output-filename}"/>
>>       <p:store href="{$output-filename}"/>
>>       <p:identity/>
>>     </p:declare-step>
>> Because the percent signs as they are used in the filename are
>> incompatible with URI encoding, I expect them to be percent-encoded
>> themselves, with the modified filename echoed to stderr (in the
>> <p:identity> step) and used to save the test file (in the <p:store>
>> step). What happens instead is that the percent encoded value is
>> written, as expected, to stderr:
>>     test-1a%257%25.xml
>> but the file is saved to the local filesystem as if encode-for-uri()
>> had not been applied, that is, as:
>>     test-1a%7%.xml
> I don't have an explanation for that, perhaps ask Achim by raising an
> issue on Morgana on Sourceforge.

Thinking about it again, I think you would see the same result using
XSLT and xsl:result-document, the file: URI has the %25 but on creating
a file name from it is decoded as %. That is probably simply what
underlying URI to file path/name libraries in Java or .NET do.

Received on Sunday, 22 November 2020 17:51:43 UTC