We are encountering a problem with xsltproc on Windows when we specify an 
output filename which contains 1 or more single quotes. For instance, in this 
command line here:
    xsltproc -o "C:\temp\a'quote.xml" "C:\Temp\transform.xsl" 
"C:\Temp\input.xml"

We are seeing this response from xsltproc:
    runtime error
    xsltApplyStylesheet: saving to file:///C:/temp/a'quote.xml may not be 
possible

When we debug xsltproc, we have traced the problem down to the xmlParseURI() 
function being used by security.c, where an improper parsing of the filepath 
results in a null uri object which ultimately leads to a false being returned 
by xsltCheckWritePath() and hence the above error message.

Digging further into libxml, it appears that there could be a bug with the 
ISA_SUB_DELIM macro, where the comment associated with the macro specifies that 
a single quote should be included, but the macro itself has left the single 
quote off its list:

/*
 *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
 *                     / "*" / "+" / "," / ";" / "="
 */
#define ISA_SUB_DELIM(p)      \
      (((*(p) == '!')) || ((*(p) == '$')) || ((*(p) == '&')) ||  \
       ((*(p) == '(')) || ((*(p) == ')')) || ((*(p) == '*')) ||  \
       ((*(p) == '+')) || ((*(p) == ',')) || ((*(p) == ';')) ||  \
       ((*(p) == '=')))

This omission ends up tripping xmlParse3986Segment(), since it then stops 
parsing on the single quote and will result in an incomplete parse of the URI.

There is a workaround for this issue for xsltproc, where we specify a filename 
which is an already escaped URI:
    xsltproc -o "file:///C:/temp/a%27quote.xml" "C:\Temp\transform.xsl" 
"C:\Temp\input.xml"

However, given the nature and ultimate cause of the problem, we believe that 
the problem is much more fundamental and is at the core of the uri processing 
in libxml, and hence could have a larger ramification beyond that of just 
xsltproc. Addressing this issue at the source would seem to be the best way to 
go.

If there are possibly other suggestions for dealing with this issue, please let 
us know. Thanks.

Ray
_______________________________________________
xslt mailing list, project page http://xmlsoft.org/XSLT/
[email protected]
http://mail.gnome.org/mailman/listinfo/xslt

Reply via email to