[XML-SIG] prepare_input_source and relative path
Sylvain.Thenault at logilab.fr
Tue Feb 8 16:42:10 CET 2005
On Tuesday 08 February à 04:13, Mike Brown wrote:
> Sylvain Thénault wrote:
> > - prepare_input_source('relative.xml', '/base') -> /base/relative.xml
> > the sf submitted patch fix this one to.
> Under no circumstances should '/base' + 'relative.xml' == '/base/relative.xml'.
> It would only be an acceptable result if you had '/base/' instead of '/base'.
> > - prepare_input_source('file:relative.xml', '/base') ->
> > file:/base/relative.xml
> Same here. This is incorrect.
yes, sorry for the wrong examples. Anyway in pyxml the base argument is
usually something like '/base/starthere.xml' so the patch fix correctly
this case. However you're right that it should probably be fixed to
handle the "no trailing slash" problem.
> > this allow to have a xml file containing relative system identifiers
> > such as:
> > <!ENTITY plans SYSTEM "file:plans.xml">
> (1) 'file:plans.xml' is not a relative URI reference.
> (2) The result of merging the reference 'file:plans.xml' with *any* base URI
> must be 'file:plans.xml'. RFC 3986 sec. 5 governs this resolution.
> > <!ENTITY chatbot SYSTEM "chatbot.xml">
> > where parse(open('path to my xml file')) should not fail as it currently
> > does.
> Trust me, you'll find that it is much easier to implement RFC 3986 sec. 5 than
> it is to work around bugs in urllib and urlparse. I suggest porting Absolutize()
> and BaseJoin() from 4Suite's Ft.Lib.Uri.
I guess you're right. I wrote this patch because it was fixing my
problem. Now if it doesn't take too much time to have every cases
correctly fixed by implementing RFC 3986, I may take some time to do so
or to help having it done. And if parts of the job is already done in
4suite, that's great. However what's in 4suite, what's not and need to
be implemented is not yet clear to me.
Sylvain Thénault LOGILAB, Paris (France).
http://www.logilab.com http://www.logilab.fr http://www.logilab.org
More information about the XML-SIG