Re: XPATH evaluation

Поиск
Список
Период
Сортировка
От Florian Pflug
Тема Re: XPATH evaluation
Дата
Msg-id AFE4ACB6-893D-4E70-B5C9-847236B3AFCF@phlo.org
обсуждение исходный текст
Ответ на XPATH evaluation  (Radosław Smogura <rsmogura@softperience.eu>)
Ответы Re: XPATH evaluation  (Andrew Dunstan <andrew@dunslane.net>)
Re: XPATH evaluation  (Radosław Smogura <rsmogura@softperience.eu>)
Список 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 по дате отправления:

Предыдущее
От: Radosław Smogura
Дата:
Сообщение: XPATH evaluation
Следующее
От: Shigeru Hanada
Дата:
Сообщение: Re: per-column generic option