Re: XPATH evaluation - Mailing list pgsql-hackers

From Florian Pflug
Subject Re: XPATH evaluation
Date
Msg-id AFE4ACB6-893D-4E70-B5C9-847236B3AFCF@phlo.org
Whole thread Raw
In response to XPATH evaluation  (Radosław Smogura <rsmogura@softperience.eu>)
Responses Re: XPATH evaluation
Re: XPATH evaluation
List pgsql-hackers
On Jun17, 2011, at 11:09 , Radosław Smogura wrote:
> 1.
> SELECT (XPATH('/root/*', '<root xmlns:o="http://olacle.com/db"
xmlns:p="http://postgresql.org/db"><o:db><a><b></b></a></o:db><p:db></p:db></root>'));
> Produces:
> "{"<o:db>
>  <a>
>    <b/>
>  </a>
> </o:db>",<p:db/>}"
> In above <b></b> was reduced to <b/> this is different infoset then input, and those notations are differently
interpretede.g. by XML Binding & WebServices. The 1st one will may be mapped to empty string, and 2nd one to to null. 

Oh, joy :-(

Does this happen only with my patch applied or also with unpatched HEAD?

> 2.
> SELECT (XPATH('/root/*', '<root xmlns:o="http://olacle.com/db"
xmlns:p="http://postgresql.org/db"><o:db></o:db><p:db></p:db></root>'));
> "{<o:db/>,<p:db/>}"
> In above I missing namespaces.

Hm, that's a hard problem a think. Your problem (1) basically tells us that
ideally we'd return the matching parts of an XML document unmodified. Now,
(2) tells us that isn't to most sensible thing to do either.

> I may take on assignment 1st (fix is simple)

Whats your proposed fix for (1)?

> , but for 2nd I have mixed fillings. I think 2nd should transfer namespaces
> in some way to client.

I don't see how XPATH() can do that without breaking it's API. The only
thing we could do AFAICS is the define a second XPATH evaluation function
which returns a list of namespace declarations (prefix and uri) for every
node.

best regards,
Florian Pflug



pgsql-hackers by date:

Previous
From: Radosław Smogura
Date:
Subject: XPATH evaluation
Next
From: Shigeru Hanada
Date:
Subject: Re: per-column generic option