From: | "Nikolay Samokhvalov" <samokhvalov(at)gmail(dot)com> |
---|---|
To: | "Sean Davis" <sdavis2(at)mail(dot)nih(dot)gov> |
Cc: | pgsql-novice(at)postgresql(dot)org |
Subject: | Re: xpath question |
Date: | 2007-11-22 10:42:17 |
Message-ID: | e431ff4c0711220242ide164e3q5ee4bd81599f5cf0@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-novice |
On Nov 21, 2007 8:42 PM, Sean Davis <sdavis2(at)mail(dot)nih(dot)gov> wrote:
> Thanks, Pavel for the reply. However, I looked a bit more and it
> appears that xpath always returns an xml array in 8.3b2.
>
> annodb=# \df xpath;
> List of functions
> Schema | Name | Result data type | Argument data types
> ------------+-------+------------------+---------------------
> pg_catalog | xpath | xml[] | text, xml
> pg_catalog | xpath | xml[] | text, xml, text[]
> (2 rows)
>
> So, there is not a way to force a single element to be returned as far
> as I can see. I did an equivalent example to the one you suggested:
The xpath() function added to 8.3 is generic function, so it really
returns xml[] always. That was the main aim -- to add the generic
function.
You can easily create any wrapper to meet your needs. E.g., smth like
xpath_first() that always returns only the first xml chunk, or
xpath_single() that performs concatenation of all xml chunks and
returns single xml.
Anyway, in both cases you break significantly from the general XML
semantics -- that's why such stuff is not implemented by default. BTW,
maybe some convenient wrappers will be added to Postgres in the
future, but surely this should be done only after good volume of
practical experience is collected.
--
Nikolay Samokhvalov <nikolay(at)samokhvalov(dot)com>
http://nikolay.samokhvalov.com
Postgresmen http://postgresmen.ru
OpenWebTechnologies http://openwebtech.ru
From | Date | Subject | |
---|---|---|---|
Next Message | Sean Davis | 2007-11-22 13:37:20 | Re: xpath question |
Previous Message | Jason Tan Boon Teck | 2007-11-22 03:44:05 | SQL statements equivalent to pg_dump |