Jan Szumiec wrote:
>
> Does PG allow you to store XML documents as DOM documents?
> Is there such data type? If not, is it very hard to extend
> the type system to include a binary representation of an
> XML document?
There are a few ways. I like the stuff in "contrib/xml2".
There is also the "pgsql" project at
http://gborg.postgresql.org/project/xpsql/projdisplay.php
that I think provides similar functionality.
> What I'm trying to do is the following:
>
> SELECT AVERAGE(xpath_query('/ds/item[@name=\'left\']')
> GROUP BY language;
I think the example below shows the features you're
interested in using the 'xml2' package from contrib.
fli=# create table xmltest (xml text);
CREATE TABLE
fli=# insert into xmltest values('<a><b id="one">1</b></a>');
INSERT 218847847 1
fli=# insert into xmltest values('<a><b id="two">2</b></a>');
INSERT 218847848 1
fli=# select sum(xpath_number(xml,'/a/b[@id="one"]')) from xmltest;
sum
-----
1
(1 row)
fli=# select sum(xpath_number(xml,'/a/b')) from xmltest;
sum
-----
3
(1 row)
You can see another example of it here:
http://www.throwingbeans.org/tech/postgresql_and_xml.html
but the README in Postgresql's source distribution is
probably the best reference.