Possible solution to default namespace problem

Gustavo Sverzut Barbieri <[email protected]> Thu, 30 Mar 2006 20:59:31 -0300
Newsgroups gmane.comp.gnome.gdome
Organization INdT
Message-ID <[email protected]>
Hello,

I sent a mail before asking how to solve the problem with:

<doc xmlns="/space"><a>t</a></doc>

not working with XPath: /doc/a.

After some reseach I found out that it's a problem with XPath specification, 
and that it's the correct behaviour 
(http://mail.gnome.org/archives/xml/2002-December/msg00186.html).

As said in the thread, one must register a prefix to the default namespace by 
means of xmlXPathRegisterNs(), but I cannot do that in my own program because 
Gdome isolates it.

As xmlXPathRegisterNs() operates on a xmlXPathContext and it's created and 
destroyed on gdome_xpeval_evaluate() (or gdome_xpath_xpeval_evaluate()), I 
cannot operate on such thing.

I have some proposals to fix the problem, and require some feedback on Gdome 
core developers on what's the preferred:

 * add an extra field to GdomeXPathNSResolver with the xmlXPathContext, reuse 
this context later. Then add a GdomeXPathNSResolver function to bind prefixes 
to URIs. This is more general approach.

 * add another function gdome_xpeval_evaluateDefaultNS( ..., 
default_ns_prefix, default_ns_uri, ... ) or even avoid default_ns_uri, 
looking for NS with NULL prefix. This is more hack, but will work.

 * add another function gdome_xpeval_evaluateWithNSList( ..., nsList, ... ) 
that gets a list of pairs of prefix and uri to use.

I would go with the first solution, but if you have any better idea, tell me 
ASAP. I should have a patch to the first solution tomorrow.


-- 
Gustavo Sverzut Barbieri
------------------------
Instituto Nokia de Tecnologia - INdT

Jabber: [email protected]
   MSN: [email protected]
  ICQ#: 17249123
 Skype: gsbarbieri
Mobile: +55 (81) 9927 0010
 Phone:  +1 (347) 624 6296; [email protected]
   GPG: 0xB640E1A2 @ wwwkeys.pgp.net