Search Postgresql Archives

XPath question - big trouble

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello everyone,

First of all, thank you for integrating XPath in Postgresql.

But, as you will see, this is a desperate cry for help: 

1. the actual context:
Postgresql 8.1.4, Fedora Core 5

DATABASE
=========
CREATE TABLE xmldocuments
(
  id int8 NOT NULL,
  rawdata text,
  title varchar(255),
  CONSTRAINT pk_xmldocs PRIMARY KEY (id)
) 
WITHOUT OIDS;

RAWDATA contents model
=====================
<mydocument>
        <title></title>
        <body>
                <paragraph id="87" style="para21"></paragraph>
                <chapter>
                        <title></title>
                        <contents>
                                <paragraph id="01" style="para01"></paragraph>
                                <paragraph id="02" style="para01"></paragraph>
                                <paragraph id="03" style="para01"></paragraph>
                                <paragraph id="04" style="para01"></paragraph>
                                <paragraph id="05" style="para01"></paragraph>
                        </contents>
                </chapter>
                <chapter>
                        <title></title>
                        <contents>
                                <paragraph id="654" style="para01"></paragraph>
                                <paragraph id="54" style="para02"></paragraph>
                                <paragraph id="64" style="para01"></paragraph>
                                <paragraph id="98" style="para02"></paragraph>
                                <paragraph id="65" style="para02"></paragraph>
                                <paragraph id="655" style="para01"></paragraph>
                        </contents>
                </chapter>
        </body>
</mydocument>

I have 4 or 5 lines in the table xmldocuments; on every record, rawdata has
data similar to the above model.

2. the problem:
how can I select and return only this:
a. a single paragraph
                        <paragraph id="02"></paragraph>
b. a collection of paragraphs that have in common a specific criteria (let's
say style="para02")

                        <paragraph id="54" style="para02"></paragraph>
                        <paragraph id="98" style="para02"></paragraph>
                        <paragraph id="65" style="para02"></paragraph>

For now, the following query
SELECT 
    xpath_nodeset(rawdata, '/mydocument/body/chapter/contents/paragraph')
FROM public.xmldocuments
WHERE 
    id=4
will return all paragraphs inside document body.

If I add the following clause
AND
xpath_bool(rawdata,'/mydocument/body/chapter/contents/paragraph[objid="2_1"]');
the result set will be empty !!!

I even tried:

SELECT t.idxml, t.rawxml, t.xmlid
FROM
    xpath_table('id', 'rawdata','xmldocuments', 
        '/mydocument/body/paragraph|/mydocument/body/chapter/content/paragraph|/mydocument/body/chapter/content/paragraph/@objid',
        --'xpath_string(''rawdata'',''@objid'') = ''2_1'' '
        --'xpath_bool(''rawdata'',''/mydocument/body/chapter/content/paragraph[@objid="2_1"]'')'
            'true'
        ) 
        AS t(idxml integer, rawxml text, xmlid text),
    xmldocuments as x
WHERE 
    t.idxml = x.id
AND
    x.id = 4


Please, help!

Thank you for your time,

Marian
-- 
~~~~~~~~~~~~~~~~~~~~~~~
- S o f t E x p e r t -
~~~~~~~~~~~~~~~~~~~~~~~



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux