Re: xpath processing brain dead
От | James Pye |
---|---|
Тема | Re: xpath processing brain dead |
Дата | |
Msg-id | 278C752B-226C-4E2D-B683-D49760F5086D@jwp.name обсуждение исходный текст |
Ответ на | Re: xpath processing brain dead (James Pye <lists@jwp.name>) |
Ответы |
Re: xpath processing brain dead
|
Список | pgsql-hackers |
sigh.. I got curious. :P On Feb 27, 2009, at 7:19 PM, James Pye wrote: > Well, that or force the user to call it explicitly. Attached is the patch that I used to get the results below.. This is just a proof of concept, so it's quite lacking. Notably, it doesn't even try to identify well-formed documents. Purpose/idea being, give the user access to the poorly-formed document as a node-set via the "fragment" function instead of mangling the xpath and xml: postgres=# SELECT xpath('fragment()//*', 'bleh<foo/><bar/>'::xml); xpath ------- {} (1 row) postgres=# SELECT xpath('fragment()//*', 'bleh<meh><sub/></meh><foo/ ><bar/>'::xml); xpath ---------- {<sub/>} (1 row) postgres=# SELECT xpath('fragment()/*', 'bleh<meh><sub/></meh><foo/ ><bar/>'::xml); xpath ---------- {<sub/>} (1 row) postgres=# SELECT xpath('fragment()', 'bleh<meh><sub/></meh><foo/><bar/ >'::xml); xpath ------------------------ {bleh,"<meh> <sub/> </meh>",<foo/>,<bar/>} (1 row) postgres=# SELECT xpath('/*', 'bleh<meh><sub/></meh><foo/><bar/>'::xml); xpath ------- {} (1 row) postgres=# SELECT xpath('fragment()[local-name()="foo"]/@att', 'bleh<meh><sub/></meh><foo att="sometin"/><bar/>'::xml); xpath ----------- {sometin} (1 row) postgres=# SELECT xpath('fragment()[local-name()="meh"]/*', 'bleh<meh><sub/></meh><foo att="sometin"/><bar/>'::xml); xpath ---------- {<sub/>} (1 row) postgres=# SELECT xpath('fragment()[local-name()="meh" or local- name()="bar"]', 'bleh<meh><sub/></meh><foo att="sometin"/><bar/>'::xml); xpath ----------------- {"<meh> <sub/> </meh>",<bar/>} (1 row) postgres=# SELECT xpath('fragment()[local-name()="bar"]', 'bleh<meh><sub/></meh><foo att="sometin"/><bar/>'::xml); xpath ---------- {<bar/>} (1 row) postgres=# SELECT xpath('fragment()[@*]', 'bleh<meh><sub/></meh>othertext<foo att="sometin"/><bar/>'::xml); xpath ---------------------------- {"<foo att=\"sometin\"/>"} (1 row) Can't say that I've ever been thrilled with using node-sets, but *shrug*. I'm sleepy now..
Вложения
В списке pgsql-hackers по дате отправления: