[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Escaping special characters for *nix file path


Subject: Re: [xsl] Escaping special characters for *nix file path
From: Liam R E Quin <liam@xxxxxx>
Date: Sun, 29 Jul 2012 10:58:10 -0400

On Sun, 2012-07-29 at 15:58 +0200, Wolfgang Laun wrote:

> A relatively safe way would be to enclose the path name in apostrophes
> (') and escape all contained apostrophes and backslashes with a
> backslash.

It would be if it worked :-)

\ is not special inside '...' in the shell, and neither are ` or $
(in shell-speak, no interpolation happens and there is no escaping)

\ *is* special inside "..."
(this is the difference between the two forms of quote in fact)

so,
$ mkdir try
$ cd try
$ touch "a`date`b"
$ ls
aSun Jul 29 10:16:42 EDT 2012b
$ touch 'a`date`b
$ ls
a`date`b
aSun Jul 29 10:16:42 EDT 2012b
$ touch "c\`date\`d"
$ ls
a`date`b
aSun Jul 29 10:16:42 EDT 2012b
c`date`d
$

This is all about escaping from the shell, though. On Unix (and Linux
and OS X) a filename can contain any character except NUL (a zero byte)
or / (because that's the path separator).

If the resulting files are going to be accessed as URIs though, you also
have to avoid a ton of other characters, and \-escaping doesn't work -
you have to use uri-escape(), and in that case there's no need to mess
around with backslashes either.

But all this presupposes particular uses -- presumably XSLT is being
used to generate a shell script here.

Liam

-- 
Liam Quin - XML Activity Lead, W3C, http://www.w3.org/People/Quin/
Pictures from old books: http://fromoldbooks.org/
Co-author, 5th edition of "Beginning XML", Wrox, June 2012


Current Thread
Keywords