Hi,

It appears that while libxml2 internals expect entity loading to be
using "proper" URIs, CLI tools don't do the necessary conversion between
the real path and URIs, which can lead to unexpected results.

See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=516916 for an
example of a failure when the path of the file baing parsed contains
a space.

The interesting thing about that example is that while:
xmllint --noent "/tmp/foo bar/book.xml" fails,
xmllint --noent "/tmp/foo%20bar/book.xml" succeeds.

Even more interesting: if the real directory is "/tmp/foo%20bar" instead
of "/tmp/foo bar", the latter works too.

And if both directories exist, xmllint --noent "/tmp/foo%20bar/book.xml"
will read data from "/tmp/foo%20bar", not "/tmp/foo bar".

This is quite inconsistent.

Should the CLI tools use xmlEscapeURI() on file paths before giving
them to the API ? Or should xmlCreateFileParserCtxt use xmlEscapeURI
before passing the file name to xmlCreateURLParserCtxt ?

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

Reply via email to